【问题标题】:How to extract LineString data from GeoDataFrame and match with Polygon?如何从 GeoDataFrame 中提取 LineString 数据并与 Polygon 匹配?
【发布时间】:2019-12-04 12:20:09
【问题描述】:

尊敬的 StackOverflow 社区,

主要问题:

我有一个 GeoDataFrame,其中包含纽约市的 StreetNetwork - 曼哈顿(通过 osmnx 包获得),我想从所有街道中提取坐标(经度/纬度数据),这些街道存储为几何下的 LineStrings,如下所示:

*

field_1                                                     0
access                                                       
bridge                                                       
geometry    LINESTRING (-73.9975944 40.7140611, -73.997492...
highway                                           residential
junction                                                     
key                                                         0
lanes                                                        
length                                                 11.237
maxspeed                                               25 mph
name                                         Catherine Street
oneway                                                   True
osmid                                                 5670536
ref                                                          
service                                                      
tunnel                                                       
u                                                  1773060097
v                                                    42437559
width                                                        
geometry    LINESTRING (-73.9975944 40.7140611, -73.997492...
Name: 0, dtype: object

*

我要做的是提取每个行项目的几何信息:

df.iloc[x][3]

问题是输出格式为 str:

[1]: LINESTRING (-73.9975944 40.7140611, -73.9974922 40.7139962)
[2]: print(type(...))
[2]: <class 'str'>

这使得自动化和处理输出数据变得困难。有谁知道如何提取它,使其已经是 LineString(或任何其他可用的列表/数组)格式?

另一个问题:

我的总体目标是将此街道信息与出租车区(多边形格式的区域)的 shapefile 进行映射,以识别哪些街道位于哪个区域,以及哪些经纬度区域被一个区域内的街道覆盖(多边形)。是否有任何直接的方法可以利用 shapely、geopandas 或 osmnx 包(即类似“polygon.contains(Point)”但在“polygon.contains(LineString) ”?

非常感谢您的支持!

【问题讨论】:

标签: python geopandas


【解决方案1】:

要提取几何坐标,您需要使用以下代码:

df.geometry.apply(lambda geom: geom.coords, axis=1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多