【发布时间】:2017-12-27 08:32:38
【问题描述】:
我有一个 GeoPandas 数据框,它是从 shapefile 对象创建的。 但是,某些线路名称相同,但位置却大不相同。
我希望每一行都有一个唯一的名称! 因此,我需要以某种方式分割线,如果它们在几何上分开并重命名它们。
可以尝试计算所有街道块之间的距离,并在它们靠近时重新组合它们。
距离的计算可以在 Geopandas 中轻松完成:Distance Between Linestring Geopandas
一组要尝试的行:
from shapely.geometry import Point, LineString
import geopandas as gpd
line1 = LineString([
Point(0, 0),
Point(0, 1),
Point(1, 1),
Point(1, 2),
Point(3, 3),
Point(5, 6),
])
line2 = LineString([
Point(5, 3),
Point(5, 5),
Point(9, 5),
Point(10, 7),
Point(11, 8),
Point(12, 12),
])
line3 = LineString([
Point(9, 10),
Point(10, 14),
Point(11, 12),
Point(12, 15),
])
df = gpd.GeoDataFrame(
data={'name': ['A', 'A', 'A']},
geometry=[line1, line2, line3]
)
【问题讨论】:
-
dbscan 在坐标上对 sklearn 进行聚类是这里的一个选项。 scikit-learn.org/stable/modules/generated/…。数据使用示例:scikit-learn.org/stable/auto_examples/cluster/…
-
另外请分享所有需要的文件。仅 shp 文件不足以加载数据。详情:gis.stackexchange.com/questions/262505/…
-
是的,现在加载数据一切正常。生病检查聚类方法。
-
我已经用 scikit-learn 库添加了一些基本方法。您可以使用这一行:“clust = DBSCAN(eps=0.5)”(更改 eps 甚至从这里 scikit-learn.org/stable/modules/clustering.html 采用不同的聚类算法)以获得所需的结果。
标签: python python-3.x pandas geolocation geopandas