python-3.x - POLYGON((x1 x2), (x3 x4), (x5 x6), (x7 x8)) 和 POLYGON([(x1,x2), (x3,x4), (x5,x6), (x7,x8) 的区别)])
问题描述
我对使用geopandas
和更普遍的 GIS 方法相当陌生,我对如何定义和表示对象有点困惑,主要是因为我找到的一些解决问题的解决方案我要求输入数据采用其他形式我设法生成的那个。
让我举例说明:
假设我希望将 LineString 分成 6 个相等的段,那么这种方法可以完美地工作:
from shapely.geometry import LineString, MultiPoint
from shapely.ops import split
line = LineString([(0, 0), (10, 10)])
splitter = MultiPoint([line.interpolate((i/4), normalized=True) for i in range(1, 4)])
split(line, splitter).wkt
返回:
'GEOMETRYCOLLECTION (LINESTRING (0 0, 2.5 2.5), LINESTRING (2.5 2.5, 5 5), LINESTRING (5 5, 7.5 7.5), LINESTRING (7.5 7.5, 10 10))'
用我的方法(在我的数据上)
zone_short_edges['line'] = zone_short_edges.apply(lambda row: LineString([row['fr_point'], row['to_point']]), axis=1) #Create a linestring column
zone_short_edges['midpoint'] = zone_short_edges.apply(lambda row: row['line'].centroid, axis=1) #Find centroid
zone_short_edges = zone_short_edges.set_geometry("line")
zone_short_edges = zone_short_edges.set_geometry("midpoint")
我生成这种类型的 POINT 和 LINESTRING:
id vertex_id fr_point \
1 Allé 119 2 POINT (119.79008 28.35047)
3 Allé 119 4 POINT (122.85067 44.85106)
to_point seg_length \
1 POINT (122.85067 28.08433) 3.072140
3 POINT (119.92314 44.71798) 2.930553
line \
1 LINESTRING (119.79008 28.35047, 122.85067 28.0...
3 LINESTRING (122.85067 44.85106, 119.92314 44.7...
midpoint
1 POINT (121.32038 28.21740)
3 POINT (121.38690 44.78452)
也就是说,LINESTRING (119.79008 28.35047, 122.85067 28.0454, 122.3434 23.323)
. 因此我不能使用线串拆分方法。此外,该方法的结果是我必须开始的形式的线串。
所以,我的问题是:
LineString([(0, 0), (10, 10)])
和 和有什么不一样LINESTRING((0 0), (10 10))
?- 我可以把一个变成另一个吗?
- 也许是一个相关的问题:假设我的 geopandas 数据框 df 在表单中有一个几何类型的列
LINESTRING((0 0), (10 10))
不允许该方法df.exterior.coords
。为什么?
感谢您的洞察力!
解决方案
推荐阅读
- ios - 为什么它不直接显示正确大小的内容?
- web-scraping - 错误的页面解析了 BeautifulSoup?
- javascript - 去抖函数调用,并清除尾随函数
- python - 如何打印 x 数量的答案而不是打印 x 数量的值?
- go - 如何在没有换行符的情况下在 Golang 中打印?
- ruby-on-rails - Ruby Puma 查看所有线程是否被占用?
- parsing - 在 Haskell (Parsec) 中链接两个解析器
- c# - 为流畅的语法自动设置 `TInput` 等于 `TOutput`
- java - ExecutorService to execute a single task n times by multiple threads (n thread "races")
- linux - 命名管道中的串行传输