标签: shapely

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万
查看次数

安装Shapely:OSError:[WinError 126]找不到指定的模块

我必须安装Shapely包(http://toblerity.org/shapely/project.html#installation).但是当我使用时:

pip install Shapely
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Collecting Shapely
  Using cached Shapely-1.5.17.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\AppData\Local\Temp\pip-build-mwuxcain\Shapely\setup.py", line 38, in <module>
        from shapely._buildcfg import geos_version_string, geos_version, \
      File "C:\Users\AppData\Local\Temp\pip-build-mwuxcain\Shapely\shapely\_buildcfg.py", line 200, in <module>
        lgeos = CDLL("geos.dll")
      File "C:\Users\Anaconda3\lib\ctypes\__init__.py", line 344, in __init__
        self._handle = _dlopen(self._name, mode)
    OSError: [WinError 126] The specified module could not be found

    ----------------------------------------
Command "python setup.py egg_info" failed with error code …
Run Code Online (Sandbox Code Playgroud)

python packages shapely

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

安装Shapely时找不到OSError geos_c

我是使用python在地图上制作/绘图的新手,一直试图按照这个博文来生成世界地图(http://sciblogs.co.nz/seeing-data/2011/08/12/plotting-geographic-数据上-A-世界地图与 - 蟒/).在这里遇到了一些问题:

  1. 安装底图(用于绘制地理投影数据的Matplotlib扩展).

    from mpl_toolkits.basemap import Basemap
    Traceback (most recent call last):
    File "geos_demo.py", line 1, in <module>
    from mpl_toolkits.basemap import Basemap
    ImportError: No module named mpl_toolkits.basemap
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装Shapely,但发生以下错误[1]:

  3. 然后我进入了geos.py文件并将geos.dll的所有引用更改为geos_c.dll,如下所示:http://osgeo-org.1560.n6.nabble.com/osgeo4w-258- 问题与-蟒蛇,身材匀称的Python-2-7-2-td4336816.html

  4. 但是,会出现相同的错误[1].

我正在使用Python 2.7.1和M​​ac OS 10.7.4.如果我能提供更多信息,请告诉我,非常感谢社区的任何指导!谢谢!

[1]

    from shapely.geometry import Point
    Traceback (most recent call last): File "<stdin>", line 1, in <module>
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/__init__.py", line 4, in <module>
    from geo import box, shape, asShape, mapping
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/geo.py", line 5, in <module>
    from point import Point, asPoint
    File "/Users/Desktop/python/ENV/lib/python2.7/site-packages/shapely/geometry/point.py", …
Run Code Online (Sandbox Code Playgroud)

python geos matplotlib-basemap shapely

17
推荐指数
4
解决办法
1万
查看次数

如何根据Point顶点创建多边形?

我想从形状点创建一个多边形.

from shapely import geometry
p1 = geometry.Point(0,0)
p2 = geometry.Point(1,0)
p3 = geometry.Point(1,1)
p4 = geometry.Point(0,1)

pointList = [p1, p2, p3, p4, p1]

poly = geometry.Polygon(pointList)
Run Code Online (Sandbox Code Playgroud)

给我一个类型错误 TypeError: object of type 'Point' has no len()

如何Polygon从形状Point对象中创建?

python polygon shapely

17
推荐指数
3
解决办法
4万
查看次数

如何将 geojson 转换为形状多边形?

我有一个 geoJSON

geo = {'type': 'Polygon',
 'coordinates': [[[23.08437310100004, 53.15448536100007],
   [23.08459767900007, 53.15448536100007],
   [23.08594514600003, 53.153587050000056],
   (...)
   [23.08437310100004, 53.15448536100007]]]}
Run Code Online (Sandbox Code Playgroud)

我想使用这些坐标作为 的输入shapely.geometry.Polygon。问题是 Polygon 只接受tuple值,这意味着我必须将此 geojson 转换为多边形。当我尝试将此类数据输入到多边形中时出现错误ValueError: A LinearRing must have at least 3 coordinate tuples

我试过这个:

[tuple(l) for l in geo['coordinates']]
Run Code Online (Sandbox Code Playgroud)

但这不太有效,因为它只返回这个

[([23.08437310100004, 53.15448536100007],
  [23.08459767900007, 53.15448536100007],
  (...)
  [23.08437310100004, 53.15448536100007])]
Run Code Online (Sandbox Code Playgroud)

我需要的是这个(我认为它是一个元组)

([(23.08437310100004, 53.15448536100007),
  (23.08459767900007, 53.15448536100007),
  (...)
  (23.08437310100004, 53.15448536100007)])
Run Code Online (Sandbox Code Playgroud)

有这个功能吗?

python geojson pandas shapely

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

使用Shapely绘制一个椭圆

我正在将Shapely集成到我的代码中,我必须处理几种不同类型的几何对象.我的大多数需求都满足于Lines,Polygons和LineStrings,但我需要使用省略号.有没有办法通过边界框或半轴形状地创建椭圆,而不必将椭圆离散成线?

干杯!

python shapely

14
推荐指数
2
解决办法
6772
查看次数

用两条线切割一个多边形的多边形

我试图shapely.geometry.Polygon用两条线将一个实例分成两部分.例如,在下面的代码,polygon是一个环,如果我们用削减它line1line2我们应该得到两个局部环,一个W/270度和一个与90度.会有一个干净的方法吗?

谢谢!

肖恩

from shapely.geometry import Point, LineString, Polygon

polygon = Point(0, 0).buffer(2).difference(Point(0, 0).buffer(1))
line1 = LineString([(0, 0), (3, 3)])
line2 = LineString([(0, 0), (3, -3)])
Run Code Online (Sandbox Code Playgroud)

python shapely

14
推荐指数
3
解决办法
4188
查看次数

GeoPandas:如何获取地理数据框中每个几何图形的边界框

我在 python 中使用 GeoPandas 并且有一个有效的多边形 GeoDataframe。

0         POLYGON Z ((68.70999999999999 623.1 0, 35.71 6...
1         POLYGON Z ((221.33 645.02 0, 185.7 640.33 0, 1...
2         POLYGON Z ((150.3 650 0, 160.9 650 0, 150.58 6...
Run Code Online (Sandbox Code Playgroud)

我想获得一个新的数据帧,它具有数据帧中每一行的边界框坐标。

现在我对 GeoPandas 有一些奇怪的行为。

假设我命名 GeoDataFrame gdf,然后使用代码:

gdf.bounds
Run Code Online (Sandbox Code Playgroud)

我得到相应的错误。我不知道这个错误是什么意思,因为我没有将任何值传递给bounds方法——它们是隐式传递的。

ValueError: Shape of passed values is (1, 110042), indices imply (4, 110042)
Run Code Online (Sandbox Code Playgroud)

当我尝试时: gdf.geometry.bounds 我得到相同的结果ValueError...

但是,当我这样做时,我得到了一个有效的答案:

gdf.head(10).bounds
Run Code Online (Sandbox Code Playgroud)

我得到

    minx    miny    maxx    maxy
0   0.00    618.15  68.71   650.00
1   169.56  640.33  221.33  650.00 …
Run Code Online (Sandbox Code Playgroud)

geospatial shapely geopandas

14
推荐指数
1
解决办法
9891
查看次数

将 Geopandas 多多边形转换为多边形

我有一个具有多边形几何形状的地理数据框:

在此输入图像描述

我想将它们转换为多边形,即填充多多边形的孔并使其成为单个多边形。

我已经尝试过这个类似问题的代码:


from shapely.geometry import MultiPolygon, Polygon
gdf['Polygon'] =  gdf['SHAPE'].apply( lambda x: MultiPolygon(Polygon(p.exterior) for p in x))

Run Code Online (Sandbox Code Playgroud)

但我收到错误:

TypeError: 'Polygon' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

我尝试过堆栈溢出的其他解决方案,但没有成功。

有任何想法吗?

以下是数据类型:

FID                 int64
LHO                object
Shape__Area       float64
Shape__Length     float64
SHAPE            geometry
Run Code Online (Sandbox Code Playgroud)

这是获取 shapefile 的完整代码:


import pandas as pd
import geopandas as gpd
from arcgis import GIS
gis = GIS(verify_cert=False,api_key='your_api_key')

search_result = gis.content.search(query="title:National_LHO", item_type="Feature Layer")

# get layer
layer = search_result[0].layers[0]

# dataframe from layer
df= pd.DataFrame.spatial.from_layer(layer)

gdf = gpd.GeoDataFrame(df)

gdf = gdf.set_geometry('SHAPE') …
Run Code Online (Sandbox Code Playgroud)

python shapely geopandas

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

python shapely:检查多边形是否是多边形

如何检查多边形实体是否实际上是多面?我试过了:

if len(polygon) > 1:
Run Code Online (Sandbox Code Playgroud)

但后来得到错误:

TypeError: object of type 'Polygon' has no len()
Run Code Online (Sandbox Code Playgroud)

我试过了Nill,None其他人没有用.

python shapely

13
推荐指数
2
解决办法
5916
查看次数