arcgis for javascript :WKT与geometry互转
来源:互联网 发布:淘宝女牛仔裤 编辑:程序博客网 时间:2024/06/06 02:18
在项目中要用到polygon和wkt的互转,借此总结了一下arcgis for javascript中的几种常用几何类型和wkt的互相转换。几何的wkt格式的定义请参见:
http://www.cnblogs.com/marsprj/archive/2013/02/08/2909452.html
下图展示了geometry的类型,这里互相转换只是讨论了Point、Multipoint、Polyline、Polygon,至于圆也算在Polygon范畴内:
转换原理:
综述:运用了字符串的分割、裁剪,还有数组的遍历。
实例:我们在浏览器调试我们自己的代码时候就可以找到下图类似界面,这里的feature的geometry类型是polygon,显然,我们可以看到对于polygon这种geometry由rings数组组成,每个rings由多个ring组成,每个ring数组由多个point组成,point数组由x,y坐标组成:
几何总结图(没有包括extent):
直接上代码了:
function WktToPolygon(wkt, spatialreference) { var ringsR = []; var ringR = []; var pointR = []; var rings = wkt.split("("); rings.splice(0, 2); rings[rings.length - 1] = rings[rings.length - 1].replace("))", "),"); for (var i = 0; i < rings.length; i++) { rings[i] = rings[i].replace("),", ""); var ring = rings[i].split(","); for (var j = 0; j < ring.length; j++) { var point = ring[j].split(" "); for (var k = 0; k < point.length; k++) { pointR[k] = point[k]; } ringR[j] = pointR; pointR = []; } ringsR[i] = ringR; ringR = []; } var json = { rings: ringsR, spatialReference: spatialreference } var polygon = new esri.geometry.Polygon(json); return polygon;} function PolygonToWKT(polygon) {//这个方法生成的wkt是可以用于多个环的面 var wkt = []; var wkt1 = ""; var rings = polygon.rings; for (var i in rings) { var ring = rings[i]; for (var j in ring) { var p = ring[j]; wkt.push(p.join(" ")); } wkt1 += "(" + wkt.join(",") + ")"; //给()与()之间添加分号 if (rings.length > 1 && i < rings.length - 1) { wkt1 += ","; } wkt = []; } return "POLYGON (" + wkt1 + ")";}function pointToWKT(point) { return "POINT("+point.x+" "+point.y +")";}function WktToPoint(wkt,spatialreference) { var point = wkt.replace("(", ""); point = point.slice(5, -1); var point1 = point.replace(")", ""); var pointA = point1.split(" "); var x = pointA[0]; var y = pointA[1]; return (new esri.geometry.Point(x,y,spatialreference));}function multiPointToWKT(multiPoint) { var points = multiPoint.points; var wkt=""; for (var i = 0; i < points.length; i++) { var point = points[i]; wkt += point[0] + " " + point[1]; if (points.length>1&&i1&&j
#mapDiv { width:90% }
阅读全文
0 0
- arcgis for javascript :WKT与geometry互转
- Arcgis for js之WKT和GEOMETRY的相互转换
- SQLServer——geometry与WKT
- create geometry from wkt
- WKT和Geometry
- ArcGIS API for Silverlight 编辑Geometry
- arcgis for android Geometry获取中心点
- 关于ArcGIS API for JavaScript与Dojo
- 关于ArcGIS API for JavaScript与Dojo
- 关于ArcGIS API for JavaScript与Dojo
- Arcgis API For Javascript下载与安装
- 关于ArcGIS API for JavaScript与Dojo
- arcgis for javascript 表格与要素联动
- ArcMap中使用ArcPy实现Geometry与WKT的相互转换
- ArcMap中使用ArcPy实现Geometry与WKT的相互转换
- ArcGIS For Android 解析WKT [支持多多边形、岛、洞]
- arcgis for javascript 帮助
- arcgis for javascript 帮助
- 《笨办法学python》加分习题5——我的答案
- 大型网站技术架构
- qml在stackView的情况下处理Android back键(返回键)全局双击back键退出程序
- DNS高速缓存以及DDNS动态域名服务的配置
- C++知识总结(14)
- arcgis for javascript :WKT与geometry互转
- java深入
- [thinkPHP5项目实战_01]thinkPHP5的引入及域名重新定向
- Linux学习(十二):Linux磁盘与目录容量df、du
- hdu-3830(奇妙的想法+LCA+二分)
- C++知识总结(15)
- 谈谈我对极简主义的看法
- day08、09、10
- 加密系列—Java中常用的加密方法(JDK)