标签: shapely

无法找到库geos_c或加载其任何变体

我在fedora 19中使用python.我想运行以下行Python:import shapely.geometry 出现以下错误:

OSError:无法找到或加载任何库geos_c icts of variants ['libgeos_c.so.1','libgeos_c.so']

我安装了Shapely包,以及以下两个库:

的glibc-2.17-4.fc19.i686.rpm

GEOS-3.3.8-2.fc19.i686.rpm

我只是在网上寻找这个问题的解决方案,但我还没找到

请帮我 !

python shapely

53
推荐指数
5
解决办法
3万
查看次数

从Python形状多边形中提取点/坐标

如何获取/提取定义shapely多边形的点?谢谢!

形状多边形的示例

from shapely.geometry import Polygon

# Create polygon from lists of points
x = [list of x vals]
y = [list of y vals]

polygon = Polygon(x,y)
Run Code Online (Sandbox Code Playgroud)

python polygon shapely

49
推荐指数
5
解决办法
5万
查看次数

更快速的多边形交叉方式

我有大量的多边形(~100000),并尝试找到一种智能的方法来计算它们与常规网格单元的交叉区域.

目前,我正在使用形状(基于它们的角坐标)创建多边形和网格单元.然后,使用一个简单的for循环我遍历每个多边形并将其与附近的网格单元进行比较.

只是一个小例子来说明多边形/网格单元格.

from shapely.geometry import box, Polygon
# Example polygon 
xy = [[130.21001, 27.200001], [129.52, 27.34], [129.45, 27.1], [130.13, 26.950001]]
polygon_shape = Polygon(xy)
# Example grid cell
gridcell_shape = box(129.5, -27.0, 129.75, 27.25)
# The intersection
polygon_shape.intersection(gridcell_shape).area
Run Code Online (Sandbox Code Playgroud)

(顺便说一句:网格单元的尺寸为0.25x0.25,多边形的最大尺寸为1x1)

实际上,对于具有大约0.003秒的单个多边形/网格单元组合,这是非常快的.但是,在大量多边形上运行此代码(每个多边形可以与几十个网格单元相交)在我的机器上花费大约15分钟以上(最多30分钟,具体取决于交叉网格单元的数量),这是不可接受的.不幸的是,我不知道如何编写多边形交集的代码来获得重叠区域.你有什么建议吗?有一种形状的替代品吗?

python numpy shapely

37
推荐指数
2
解决办法
4万
查看次数

修复无效的多边形| Python身材匀称

如果Polygon的任何段相交,则Shapely将Polygon定义为无效,包括colinear的段.许多软件包将创建一个带有"切口"的区域或区域,如此处所示,其具有共线段(图像):

>>> pp = Polygon([(0,0), (0,3), (3,3), (3,0), (2,0), 
                  (2,2), (1,2), (1,1), (2,1), (2,0), (0,0)])
>>> pp.is_valid
WARNING:shapely.geos:Self-intersection at or near point 2 0
False
Run Code Online (Sandbox Code Playgroud)

自然地,剪切可以在Shapely中原生实现,或者这个相同的几何体可以实现为两个有效的多边形,但是如果我只有上面显示的点列表,那么就很容易"修复"这个(从中创建有效的几何体)点数清单)?

python geometry shapely

29
推荐指数
3
解决办法
2万
查看次数

一条线上最近点的坐标

存在具有顶点坐标列表的折线= [(x1,y1),(x2,y2),(x3,y3),...]和点(x,y).在Shapely中,geometry1.distance(geometry2)返回两个几何之间的最短距离.

>>> from shapely.geometry import LineString, Point
>>> line = LineString([(0, 0), (5, 7), (12, 6)])  # geometry2
>>> list(line.coords)
[(0.0, 0.0), (5.0, 7.0), (12.0, 6.0)]
>>> p = Point(4,8)  # geometry1
>>> list(p.coords)
[(4.0, 8.0)]
>>> p.distance(line)
1.4142135623730951
Run Code Online (Sandbox Code Playgroud)

但我还需要找到最接近点(x,y)的线上的点的坐标.在上面的示例中,这是LineString对象上距离Point(4,8)1.4142135623730951单位的点的坐标.方法distance()在计算距离时应该有坐标.有没有办法让它从这个方法返回?

python distance geos shapely

27
推荐指数
1
解决办法
2万
查看次数

在Python,GeoPandas或形状上(在单个几何体中)组合多边形

我试图在GeoPandas中找到两个多边形的并集,并输出一个包含两个多边形点作为其顶点的几何体.该geopandas.overlay函数为每个单独的联合提供了多边形,但我想要一个多边形.

对于上下文,我使用它将两个管理区域组合成一个区域(即包括一个国家内的城镇区域).

以下示例来自geopandas网站,并说明了我想要的内容:

from matplotlib import pyplot as plt
import geopandas as gpd
from shapely.geometry import Polygon

polys1 = gpd.GeoSeries([Polygon([(0,0), (2,0), (2,2), (0,2)]),
                         Polygon([(2,2), (4,2), (4,4), (2,4)])])

polys2 = gpd.GeoSeries([Polygon([(1,1), (3,1), (3,3), (1,3)]),
                         Polygon([(3,3), (5,3), (5,5), (3,5)])])

df1 = gpd.GeoDataFrame({'geometry': polys1, 'df1':[1,2]})
df2 = gpd.GeoDataFrame({'geometry': polys2, 'df2':[1,2]})

res_union = gpd.overlay(df1, df2, how='union')
res_union.plot()
Run Code Online (Sandbox Code Playgroud)

res_union.png

没有任何输出几何是我所期望的,具体如下:

poly_union = gpd.GeoSeries([Polygon([(0,0), (0,2), (1,2), (1,3), \
    (2,3), (2,4), (3, 4), (3, 5), (5, 5), (5, 3), (4, 3), (4, 2), \
    (3,2), (3,1), …
Run Code Online (Sandbox Code Playgroud)

python pandas shapely geopandas

26
推荐指数
3
解决办法
2万
查看次数

计算两个矩形之间的重叠区域

在此输入图像描述

我想计算红色和蓝色矩形之间的重叠区域"THE GREY REGION".

每个矩形由其四个角坐标定义.重叠区域的结果单位是单位平方.

我无法想象我该怎么办?

任何有创意的评论将不胜感激.

python numpy polygon matplotlib shapely

20
推荐指数
3
解决办法
2万
查看次数

在多边形上找到最近点的坐标

说我有以下多边形和点:

>>> poly = Polygon([(0, 0), (2, 8), (14, 10), (6, 1)])
>>> point = Point(12, 4)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我可以计算点到多边形的距离......

>>> dist = point.distance(poly)
>>> print(dist)
2.49136439561
Run Code Online (Sandbox Code Playgroud)

...但我想知道最短距离所测量的多边形边界上的点的坐标.

我最初的方法是通过它与多边形的距离缓冲点,并找到该圆与多边形相切的点:

>>> buff = point.buffer(dist) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 但是,我不确定如何计算这一点.两个多边形不相交,所以list(poly.intersection(buff))不会给我这一点.

我是否在正确的轨道上?有更简单的方法吗?

python shapely

20
推荐指数
2
解决办法
1万
查看次数

检查地理点是否在Python的多边形内部或外部

我正在使用python,我已经定义了地图上多边形的纬度和经度(以度为单位).我的目标是检查一般P坐标点是否x,y落在这样的多边形内.因此,我希望有一个功能,允许我检查这种情况并返回True或者False如果该点在多边形内部或外部.

在此输入图像描述

在这个例子中,点在外面,结果就是 False

问题:是否有允许达到目标的库/包?如果是,你推荐哪一个?你能给出一个如何使用它的小例子吗?

这是我到目前为止编写的代码:

import numpy as np

# Define vertices of polygon (lat/lon)
v0 = [7.5, -2.5] 
v1 = [2, 3.5]
v2 = [-2, 4]
v3 = [-5.5, -4]
v4 = [0, -10]
lats_vect = np.array([v0[0],v1[0],v2[0],v3[0],v4[0]])
lons_vect = np.array([v0[1],v1[1],v2[1],v3[1],v4[1]])

# Point of interest P
x, y = -6, 5 # x = Lat, y = Lon

## START MODIFYING FROM HERE; DO NOT MODIFY POLYGON VERTICES AND DATA TYPE …
Run Code Online (Sandbox Code Playgroud)

python polygon coordinate-systems point-in-polygon shapely

20
推荐指数
4
解决办法
2万
查看次数

Windows 64上的Python,GEOS和Shapely

当我尝试在我的Windows 64位计算机上安装Shapely时,我无法使GEOS库工作.

到目前为止,我已经运行了安装了GDAL的OSGeo4W安装程序(我相信地理库包含在该软件包中).之后,我检查了我的C:\OSGeo4W\bin目录上有geos_c.dll ,但要么我错过了一些配置步骤,要么库不起作用.

我需要Shapely来工作,所以我也在pip install shapely安装GDAL之后运行,它显然有效(尽管它找不到GEOS的C库).

在我的代码中,我可以导入Shapely,但是当我尝试使用它时,我收到一个错误,告诉我"geos.dll"找不到.

任何有关这方面的帮助将非常感激.谢谢!

python gis geospatial shapely

18
推荐指数
2
解决办法
2万
查看次数