1、shapely库的基本用法Shapely是一个用于处理几何对象的Python库,它提供了各种函数和方法来进行空间分析和几何计算。下面是一些Shapely库的常见用法示例:1.创建几何对象:fromshapely.geometryimportPoint,LineString,Polygon"""创建点对象"""point=Point(0,0)"""创建线对象"""line=LineString([(0,0),(1,1),(2,1)])"""创建多边形对象"""polygon=Polygon([(0,0),(0,1),(1,1),(1,0)])2.计算几何对象的属性和操作:#计算点的坐标x=p
这个问题在这里已经有了答案:Howtodrawtheunionshapeofrectanglesinpython(1个回答)关闭6年前。我试图在matplotlib中绘制几个多边形的并集,具有一定的alpha水平。我下面的当前代码在交叉点处有较深的颜色。无论如何,是否可以使交叉点与其他地方的颜色相同?importmatplotlib.pyplotaspltfig,axs=plt.subplots()axs.fill([0,0,1,1],[0,1,1,0],alpha=.25,fc='r',ec='none')axs.fill([0.5,0.5,1.5,1.5],[0.5,1.5,1.5
我一直在尝试使用shapely来查找直线和多边形的交点,但我遇到了一些float的问题。示例代码:polygon=[(4.0,-2.0),(5.0,-2.0),(4.0,-3.0),(3.0,-3.0),(4.0,-2.0)]shapely_poly=shapely.geometry.Polygon(polygon)line=[(4.0,-2.0000000000000004),(2.0,-1.1102230246251565e-15)]shapely_line=shapely.geometry.LineString(line)intersection_line=list(shapel
我正在使用Python3.4和shapely1.3.2从长/纬度坐标对列表中创建一个多边形对象,我将其转换为众所周知的文本字符串以便解析它们。这样的多边形可能看起来像:POLYGON((-116.90443.371,-116.82343.389,-116.89543.407,-116.90843.375,-116.90443.371))由于shapely不处理任何投影并在笛卡尔空间中实现所有几何对象,因此在该多边形上调用area方法,如下所示:poly.area以平方度为单位给出该多边形的面积。要获得像平方米这样的平面单位的面积,我想我必须使用不同的投影(哪个投影?)来转换多边形的坐标
我正在尝试在六个多边形内定位数百万个点。这是我的代码:deffind_shape(longitude,latitude):iflongitude!=0andlatitude!=0:point=shapely.geometry.Point(longitude,latitude)else:return"Unknown"forcurrent_shapeinall_shapes:ifcurrent_shape['bounding_box'].contains(point):ifcurrent_shape['shape'].contains(point):returncurrent_shape[
文档字符串说:Polygon.contains如果几何包含另一个则返回True,否则返回FalsePolygon.within如果几何体在另一个几何体内部则返回True,否则返回False它们有什么不同? 最佳答案 它们是反向关系:A包含B,B在A中。>>>A.contains(B)True>>>B.within(A)True+----------------------------------+|||+----------+|||||||||||||||||||||||B|||||||+----------+||||||A|||+
我正在尝试构建一个GeoJSONobject.我的输入是一个包含地址列、纬度列和经度列的csv。然后,我从坐标中创建了Shapely点,将它们缓冲给定半径,并通过映射选项获取坐标字典-到目前为止,一切顺利。然后,引用thisquestion之后,我编写了以下函数来获取一系列词典:defmake_geojson(row):return{'geometry':row['geom'],'properties':{'address':row['address']}}我这样应用它:data['new_output']=data.apply(make_geojson,axis=1)我的结果列中充满
我有一个案例是基于在一条线上投影一个点,然后将这条线分开。我的用例稍微复杂一些,但可以使用以下代码重现我的问题:fromshapelyimport*line1=LineString([(1,1.2),(2,2),(3,2.),(4,1.2)])pt=Point(2.5,1.2)pr=line1.interpolate(line1.project(pt))根据构造,“pr”应该在line1及其交叉点上:line1.contains(pr)line1.intersects(LineString([pt,pr]))打印两次“True”。但是更改输入坐标会稍微阻碍工作流程:fromshapel
我是Python的新手,所以这个问题的答案可能很简单,但我到处寻找并尝试了很多,但找不到答案。使用Shapely简化多边形可能会产生空多边形。如果多边形为空,我想用一个点替换多边形。可以工作的东西:ifmypolyisempty:mypoly=[(0,0)] 最佳答案 鉴于mypoly是一个有形状的多边形,您可以使用is_empty来检查它是否为空,Shapely内置它来检查是否为空。fromshapely.geometryimportPointifmypoly.is_empty:mypoly=Point(0,0)
假设我有以下线串的GeoDataFrames,其中一个代表道路,另一个代表等高线。>>>importgeopandasasgpd>>>importgeopandas.tools>>>importshapely>>>fromshapely.geometryimport*>>>>>>r1=LineString([(-1,2),(3,2.5)])>>>r2=LineString([(-1,4),(3,0)])>>>Roads=gpd.GeoDataFrame(['MainSt','SpruceSt'],geometry=[r1,r2],columns=['Name'])>>>RoadsNam