Python 如何获取创建直线的点列表,并将它们向内延伸到一定长度的多边形中?

Python 如何获取创建直线的点列表,并将它们向内延伸到一定长度的多边形中?,python,geometry,polygon,Python,Geometry,Polygon,我有gps坐标。它们只是在几个不同的地方创建轮廓的点。我希望能够有一个脚本,将这些点转换成多边形,向内延伸X距离,并且-一种让它们向内和向外延伸的方式 如果我有这样的东西: 点就是点 00000000000000000 00000000000000000 00............000 00.0000000000.000 00.0000000000.000 00.0000000000.000 00.0000000000.000 00.0000000000.000 00............

我有gps坐标。它们只是在几个不同的地方创建轮廓的点。我希望能够有一个脚本,将这些点转换成多边形,向内延伸X距离,并且-一种让它们向内和向外延伸的方式

如果我有这样的东西:

点就是点

00000000000000000
00000000000000000
00............000
00.0000000000.000
00.0000000000.000
00.0000000000.000
00.0000000000.000
00.0000000000.000
00............000
00000000000000000
00000000000000000
我可以以1的距离运行这个程序,然后向内运行,最终得到一个多边形:

00000000000000000
00000000000000000
00&&&&&&&&&&&&000
00&&&&&&&&&&&&000
00&&00000000&&000
00&&00000000&&000
00&&00000000&&000
00&&&&&&&&&&&&000
00&&&&&&&&&&&&000
00000000000000000
00000000000000000
到目前为止,我已经尝试使用圆,然后减少它们,但这似乎是错误的/不太可行。这不是在网格上执行的,实际上它使用浮点数作为坐标

任何能做到这一点的图书馆都将不胜感激


Shapely是一个非常好的二维计算几何库;按照我的理解,它将您的问题简化为一行代码。

GDAL/OGR是另一种选择。最终,您要做的是一个缓冲区。要向外扩展多边形形状,请使用缓冲区距离为正的缓冲区,向内则为负的缓冲区距离。下面是一个使用shapefile的简单示例。不确定数据的格式,但如果GDAL/OGR无法读取数据,我会感到惊讶

import osgeo.ogr
# using ESRI Shape file in this example but there are a number
# of different files this lib supports: http://www.gdal.org/ogr/ogr_formats.html
driver = osgeo.ogr.GetDriverByName('ESRI Shapefile')
osgeo.ogr.UseExceptions()

# Create a data source using the driver...
dataSource = driver.Open("/home/user1/data.shp")

# Get the layer
lyr = dataSource.GetLayer()

# Select the feature in this case using an attribute query
lyr.SetAttributeFilter("column = 'value'")

# verify that you have a feature selected
print 'features in layer:', lyr.GetFeatureCount()

# get the firest feature from the layer
feature = lyr.GetNextFeature()

# get the geometry from the feature
geom = feature.GetGeometryRef()

# perform a 100 unit buffer, not sure what units the coordinates of the 
# the data you have are in.
bufferGeom = geom.buffer(100)

# bufferGeom is a geometry object, which is described here:
# <http://cosmicproject.org/OGR/ogr_classes.html#Geometry>
以下是使用GDAL/ORG开始使用空间数据的绝佳资源:

Api文档:


最后是GDAL/OGR页面的链接

不,是一张单子。每个闭合的形状都有各自独立的形状。当然,它们都有数百个点。不一定是顺时针或逆时针,只是从一个点到下一个样式的行程。-87.59160462162892,45.096611340705195,-87.58854379668621,45.090842359416861,-87.589388527669584,45.086618423968154,-87.592979043889585,45.085140007205247…你在说侵蚀/扩张方法吗?是的;看看这些例子。在如何处理弯道等问题上,你有足够的控制权。在没有库的情况下,从零开始以一种通用而健壮的方式来做这些事情是非常困难的,而afaik shapely是最好的库,因此,看看您是否可以将其引导到您的具体细节中是值得的。