WKT转GeoJson(js版)
来源:互联网 发布:民科 知乎 编辑:程序博客网 时间:2024/05/07 02:42
先来个Polygon(包括MultiPolygon)转GeoJson的,最近有点忙,等有空加上其他的:
function processPolygonString2PolygonArray(polygonString, proj) { var geoJson = {}; if (polygonString.startsWith("MULTIPOLYGON")) { // 多面 geoJson["type"] = "MultiPolygon"; var firstLeftIndex = polygonString.indexOf('('); var lastRightIndex = polygonString.indexOf(')'); // 去掉首尾括号 var str = polygonString.substring(firstLeftIndex + 1, polygonString.length - 1); // ((),(),()) , ((),(),()) , ((),(),()) // console.log(str); var pArray = new Array(); var polygonArray = str.split(")),(("); for (var i = 0; i < polygonArray.length; i++) { var pStr = polygonArray[i];//每个polygon的String if (polygonArray.length === 1) {//如果只有1个,说明没有被分割 // 去掉第一个( 去掉结尾) pStr = pStr.substring(1, pStr.length - 1); } else if (i === 0) { // 第一个,去第一个( 补结尾加上 ) pStr = pStr.substring(1, pStr.length) + ")"; // (),(),() 环的集合 } else if (i === polygonArray.length - 1) { // 最后一个: 补第一个( , 去 最后一个) pStr = "(" + pStr.substring(0, pStr.length - 1); } else { // 中间,补第一个( 补最后一个 ) pStr = "(" + pStr + ")"; } // pStr 表示 () , () ,() 线环集合 // 分割环 var rArray = new Array(); var ringsArray = pStr.split("),("); for (var j = 0; j < ringsArray.length; j++) { var ringStr = ringsArray[j]; if (ringsArray.length === 1) { // 去掉第一个( 去掉结尾 ) ringStr = ringStr.substring(1, ringStr.length - 1); } else if (j === 0) { // 如果是第一个 // 去掉第一个( ringStr = ringStr.substring(1, ringStr.length); } else if (j === ringsArray.length - 1) {// 最后一个 // 去掉结尾 ) ringStr = ringStr.substring(0, ringStr.length - 1); } // 再按逗号分割就是点集合 var ptsArray = new Array(); var pointArr = ringStr.split(","); for (var k = 0; k < pointArr.length; k++) { var pt_arr = pointArr[k].split(" "); var proj_arr = proj4(proj).inverse([pt_arr[0], pt_arr[1]]); ptsArray.push(proj_arr); } rArray.push(ptsArray); } pArray.push(rArray); } //console.log(JSON.stringify(pArray)); geoJson["coordinates"] = pArray; } else if (polygonString.startsWith("POLYGON")) { // 面,其中有可能有环 geoJson["type"] = "Polygon"; var firstLeftIndex = polygonString.indexOf('('); var lastRightIndex = polygonString.indexOf(')'); // 去掉首尾括号 var str = polygonString.substring(firstLeftIndex + 1, polygonString.length - 1); // (),(),() var rArray = new Array(); var ringsArray = str.split("),("); for (var j = 0; j < ringsArray.length; j++) { var ringStr = ringsArray[j]; if (ringsArray.length === 1) { // 去掉第一个( 去掉结尾 ) ringStr = ringStr.substring(1, ringStr.length - 1); } else if (j === 0) { // 如果是第一个 // 去掉第一个( ringStr = ringStr.substring(1, ringStr.length); } else if (j === ringsArray.length - 1) {// 最后一个 // 去掉结尾 ) ringStr = ringStr.substring(0, ringStr.length - 1); } // 再按逗号分割就是点集合 var ptsArray = new Array(); var pointArr = ringStr.split(","); for (var k = 0; k < pointArr.length; k++) { var pt_arr = pointArr[k].split(" "); var proj_arr = proj4(proj).inverse([pt_arr[0], pt_arr[1]]); ptsArray.push(proj_arr); } rArray.push(ptsArray); } geoJson["coordinates"] = rArray; } return geoJson; }
参考资料:
http://www.oschina.net/translate/geojson-spec#coordinate-reference-system-objects
http://blog.csdn.net/arenn/article/details/54907545
http://www.cnblogs.com/marsprj/archive/2013/02/08/2909452.html
阅读全文
0 0
- WKT转GeoJson(js版)
- WKT
- WKT
- ogr2gor sqlserver转geojson
- GeoJSON
- GeoJSON
- WKT(well known text)
- Shape(shp 矢量) TO(转) GeoJSON / TopoJSON
- Arcgis for js,Openlayers中加载GeoJSON
- Gdal中SHP转GeoJson
- Arcgis for js之WKT和GEOMETRY的相互转换
- OpenLayers深入浅出(6)----GeoJSON格式定制
- 地理数据格式转换(geojson、kml等)
- GeoJson格式与转换(shapefile)Geotools
- 【 D3.js 入门系列 --- 10.1 】 简化 GeoJSON 文件
- spatiallite空间数据库转换到leaflet.js的GeoJson格式
- Esri wkt字符串转proj.4 字符串的方法
- 使用标准的格式:WKT、WKB和GML(1)
- ajax学习笔记之get&post
- sublime使用技巧
- Android 开发笔记: 获取RecyclerView 滑动距离
- va_start(),va_end()函数应用
- 创建maven遇到的问题(总结更新)
- WKT转GeoJson(js版)
- tcp慢开始(Slow-Start)、拥塞避免(Congestion Avoidance)、快重传(Fast Retransmit)和快恢复(Fast Recovery)
- 推荐系统之基于内容推荐CB
- 恶意样本分析手册-虚拟机检测篇(上)
- Windows下安装PHP的Redis扩展
- Wormholes SPFA
- MapReduce的数据流程、执行流程
- 任务布置之HTTP相关概念
- Carbide 节点权限问题