首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析WKT文件

解析WKT文件
EN

Stack Overflow用户
提问于 2013-05-24 09:15:55
回答 4查看 14.1K关注 0票数 7

我有一个包含一些几何数据的WKT-file。

这里是一个样本(一条折线):

代码语言:javascript
复制
s = "ST_GeomFromText( 'LINESTRING( 11.6614 48.0189, 11.6671 48.011, 11.6712 48.0051, 11.6747 48.0001, 11.6777 47.9956, 11.6795 47.9927)',4326)"

我想要的是点的坐标。所以我做了以下几件事:

代码语言:javascript
复制
s2 = s.split("'")[1]
s3 = s2.split("(")[1]
s4 = s3.strip(' )')
s5 = s4.split(',')
print s5
['11.6614 48.0189',
 ' 11.6671 48.011',
 ' 11.6712 48.0051',
 ' 11.6747 48.0001',
 ' 11.6777 47.9956',
 ' 11.6795 47.9927']

s2, s3, s4 and s5只是一个虚拟变量,用来展示这个解决方案超越了善与恶。

是否有更简洁的解决方案?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-24 09:22:37

代码语言:javascript
复制
import re
from pprint import pprint

s = "ST_GeomFromText( 'LINESTRING( 11.6614 48.0189, 11.6671 48.011, 11.6712 48.0051, 11.6747 48.0001, 11.6777 47.9956, 11.6795 47.9927)',4326)"

nums = re.findall(r'\d+(?:\.\d*)?', s.rpartition(',')[0])
coords = zip(*[iter(nums)] * 2)
pprint(coords)

[('11.6614', '48.0189'),
 ('11.6671', '48.011'),
 ('11.6712', '48.0051'),
 ('11.6747', '48.0001'),
 ('11.6777', '47.9956'),
 ('11.6795', '47.9927')]

您可以使用map(float, nums)或equiv。如果你想要浮动而不是字符串。

票数 5
EN

Stack Overflow用户

发布于 2017-06-15 11:25:04

这是一个老问题,但这里有一个使用JSON和geomet的替代方法,这是一个转换GeoJSON <-> WKT的小型Python库。

代码语言:javascript
复制
from geomet import wkt
import json

#your WKT input:
ls = 'LINESTRING(2.379444 48.723333, 2.365278 48.720278, 2.2525 48.696111, 2.224167 48.69, 2.129167 48.652222, 2.093611 48.638056)'

#convert it to GeoJSON:
ls_json = wkt.loads(ls)

#from this point on, ls_json is storing your data in JSON format, 
#which you can access like a python dict:
point = ls_json['coordinates'][5][1]
# --> gives you 48.638056

#e.g. turn everything into a list:
arr = []
for point in a['coordinates']:
    arr.append(point)
print(arr)
票数 12
EN

Stack Overflow用户

发布于 2021-08-04 08:43:49

代码语言:javascript
复制
from shapely import wkt
p1 = wkt.loads('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16731461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档