wkt转geojson

2024-03-25 22:28
文章标签 geojson wkt

本文主要是介绍wkt转geojson,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、js实现,以polygon为例wkt转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的Stringif (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;
}

2、npm实现

npm install terraformer - wkt - parserimport wkt from 'wkt'var wkt = require('terraformer-wkt-parser');// parse a WKT file, convert it into a terraformer primitive
var primitive = wkt.parse('LINESTRING (30 10, 10 30, 40 40)');// take a terraformer primitive and convert it into a WKT representation
var polygon = wkt.stringify({"type": "Polygon","coordinates": [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]}
);

 

这篇关于wkt转geojson的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846435

相关文章

Python实现geojson文件与shp文件相互转换

前言 最近接触到了geojson格式数据文件,但发现ArcGIS软件现在无法直接打开geojson,听说ArcGIS Pro可以,但还需要下载安装包,就直接用Python实现一下。 Python实现geojson与shp相互转换 仅仅需要简单的两个函数就可以实现 import geopandas as gpd# geojson转为shpdef geojson_to_shp(input_g

如何免费获取乡镇级边界数据geoJson数据

如何免费获取乡镇级边界数据geoJson数据 我们可以通过 阿里云数据可视化平台 ,可以获取到中国各个省份/区级/县级的json数据,但是区级和县级,并没有包含街道和乡镇的数据 获取乡镇级边界数据 1.下载bigemap全能版 安装好后选择你要导出的乡镇边界 如图: 导出文件类型有三种,选择bmv类型。kml类型不开放了。 下载好自己所需要的乡镇边界bmv文件. 如图:

geojson文件默认已有的style会导致webGL渲染错误处理办法

geojson文件默认已有的style会导致webGL渲染错误处理办法 相关链接: 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 代码: export function showDraw(isFlyTo) {removeLayer()graphicLayer = new mars3d.layer.GeoJsonLayer({data: {type: "FeatureC

【ArcGIS微课1000例】0017:ArcGIS中如何将kml(kmz)文件转json(geojson)?

文章目录 一、kml获取方式二、kml转图层三、图层转json 一、kml获取方式 kml文件是一种很常用的数据格式,可以从谷歌地球(googleearth)获取某一个地区的kml范围文件,如青海湖(做好的kml文件可以从配套实验数据包0117.rar中获取)。 二、kml转图层 打开【KML转图层】工具,如下: 用法:将 KML 或 KMZ 文件转换为要素类和图层文

【ArcGIS For JS】前端geojson渲染行政区划图层并加标签

原理 通过DataV工具 生成行政区的geojson(得到各区的面元素数据), 随后使用手动绘制featureLayer与Label,并加载到地图。 //vue3加载geojson数据public/geojson/pt.json,在MapView渲染上加载geojson数据 type是"MultiPolygon"fetch(baseUrl+'/geojson/pt.json').the

mars3d实现geojson文件xxx.json格式等实现贴地效果

说明: 1.mars3d.js我们的这个sdk内部参数clampToGround是异步计算贴地效果的,最好的贴地方式是,给json数据准确的带高度的经纬度值。 补充前置知识说明,本身的geojson数据格式每个字段代表的意思需要掌握, GeoJSON  是一种对地理数据进行编码的格式,可以表示各种地理特征,如点、线、多边形等。GeoJSON 对象可以嵌套,允许复杂的地理特征。 GeoJSO

postgis中构造geojson

首先注意: 比如现在有两张表,一张population_rural表和一张sichuan表,population_rural表提供属性数据,sichuan表提供地理空间数据 population_rural表内容如下: 现在从population_rural表中查,并将结果表存在名为B的暂存表中 sichuan表内容如下: 现在从sichuan表中查,并将结果表存在名为A

geojson文件规格

geojson文件示例, {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [102.0, 0.5]},"properties": {"name": "Example Point"}},{"type": "Feature","geomet

WKT、SRID、EPSG概念

之前一直对WKT、EPSG、SRID不是很理解,总是混淆,今天看了一下,清晰了很多,顺便总结一下。 EPSG:European Petroleum Survey Group (EPSG), http://www.epsg.org/,它成立于1986年,并在2005年重组为OGP(Internation Association of Oil & Gas Producers),它负责维护并发布坐标参

【QGIS如何进行WKT可视化】

点击插件——python控制台 渲染线图层 wkt = 'LINESTRINGZ (405223.79236294992733746767 3294798.52338150842115283012 0, 405250.43677213048795238137 3294767.52838639216497540474 0, 405272.27118375105783343315 3294735.