标签: geopandas

在Geopandas/Shapely中识别多边形的唯一分组

假设我有两个不相交的群体/多边形"群岛"(想想两个非相邻县的人口普查区).我的数据看起来像这样:

>>> p1=Polygon([(0,0),(10,0),(10,10),(0,10)])
>>> p2=Polygon([(10,10),(20,10),(20,20),(10,20)])
>>> p3=Polygon([(10,10),(10,20),(0,10)])
>>> 
>>> p4=Polygon([(40,40),(50,40),(50,30),(40,30)])
>>> p5=Polygon([(40,40),(50,40),(50,50),(40,50)])
>>> p6=Polygon([(40,40),(40,50),(30,50)])
>>> 
>>> df=gpd.GeoDataFrame(geometry=[p1,p2,p3,p4,p5,p6])
>>> df
                                        geometry
0        POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0))
1  POLYGON ((10 10, 20 10, 20 20, 10 20, 10 10))
2          POLYGON ((10 10, 10 20, 0 10, 10 10))
3  POLYGON ((40 40, 50 40, 50 30, 40 30, 40 40))
4  POLYGON ((40 40, 50 40, 50 50, 40 50, 40 40))
5         POLYGON …
Run Code Online (Sandbox Code Playgroud)

python shapely geopandas

8
推荐指数
1
解决办法
1053
查看次数

Geopandas PostGIS连接

我最近开始在python中使用Geopandas来完成我的一些空间工作,并对此感到非常满意 - 我目前正在尝试阅读PostGIS功能,并且不太了解如何参数化数据库连接,这似乎并不清楚在文档中:

GeoDataFrame.from_postgis(sql, con, geom_col='geom', crs=None, index_col=None, 
    coerce_float=True, params=None)
Run Code Online (Sandbox Code Playgroud)

这可能是一个非常简单的问题,所有我想知道的是需要进入'con' - 我假设一个包含数据库连接信息的字符串?但是以什么格式?设置'sql'似乎很简单.任何帮助非常感谢 - 谢谢!

python postgis geopandas

8
推荐指数
1
解决办法
6309
查看次数

绘制 GeoDataFrame 一行的几何图形

我想绘制 geopandas 数据帧的单行中包含的几何图形,但我遇到了问题。这里有一个例子

import geopandas as gpd
import numpy as np
from shapely.geometry import Polygon

p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
p3 = Polygon([(1, 1), (2, 1), (2, 2), (1, 2)])
index = np.random.random(3)
df = gpd.GeoDataFrame()
df['index'] = index
df['geometry'] = [p1,p2,p3]
df = df.set_geometry('geometry')
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用df.plot()我得到的命令进行绘图

在此处输入图片说明

但如果我尝试只绘制一行, df.loc[:,0].plot()

我收到以下错误

TypeError: Empty 'DataFrame': no numeric data to plot,

而如果我尝试

df.loc[:,'geometry'].plot()

我得到 AttributeError: 'Polygon' object has …

python pandas geopandas

8
推荐指数
1
解决办法
4872
查看次数

Geopandas 为绘图上的点添加标签

我有一个带有几何列和带有点名称的列的地理数据框“all_locations”。在地图上绘制点效果很好,但我想用位置名称注释点。


['位置'] ['几何']
BUITHVN8 POINT()

(当然,实际数据框要大得多)

我试过这个(和其他事情):

    all_locations['coords'] = all_locations['geometry'].apply(lambda x: x.point.coords[:])
all_locations['coords'] = [coords[0] for coords in all_locations['coords']]

all_locations.plot(ax=ax)
for idx, row in all_locations.iterrows():
    plt.annotate(s=row['locatie'], xy=row['geometry'])
Run Code Online (Sandbox Code Playgroud)

添加坐标列但它给出了这个错误:“点”对象没有属性“点”

python-3.x geopandas

8
推荐指数
1
解决办法
7585
查看次数

将点转换为线 Geopandas

您好,我正在尝试将 X 和 Y 坐标列表转换为线。我想通过groupbyID 和时间映射这些数据。只要我grouby一列,我的代码就会成功执行,但两列是我遇到错误的地方。我参考了这个问题

以下是一些示例数据:

ID  X           Y           Hour
1   -87.78976   41.97658    16
1   -87.66991   41.92355    16
1   -87.59887   41.708447   17
2   -87.73956   41.876827   16
2   -87.68161   41.79886    16
2   -87.5999    41.7083     16
3   -87.59918   41.708485   17
3   -87.59857   41.708393   17
3   -87.64391   41.675133   17
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

df = pd.read_csv("snow_gps.csv", sep=';')

#zip the coordinates into a point object and convert to a GeoData Frame
geometry = [Point(xy) for xy in zip(df.X, df.Y)]
geo_df …
Run Code Online (Sandbox Code Playgroud)

python pandas geopandas

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

无法在 Anaconda 环境中安装 geopandas

我正在尝试geopandas使用 Anaconda Prompt安装该软件包,但是在我使用之后conda install geopandas发生了意外:

Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: -
Found conflicts! Looking for incompatible packages
Run Code Online (Sandbox Code Playgroud)

在此之后,它继续搜索冲突,但数小时未完成。最后还是不能用geopandas

我也试过geopandas在不同的虚拟环境中安装,它可以工作,但我不知道如何在 Jupyter Notebooks 中使用该环境。

我想知道,没有单独的环境怎么安装geopandas

或者,在单独的环境中安装 Jupyter …

python anaconda conda geopandas

8
推荐指数
2
解决办法
7960
查看次数

由于冲突,无法使用 anaconda 安装 geopandas

我是初学者,我尝试按照教程进行操作。所以我安装了一个 anaconda,下一步我应该安装 geopandas,但我收到以下消息:

conda install geopandas
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: \

...
Run Code Online (Sandbox Code Playgroud)

https://pastebin.com/c2cmmhrr

我一次又一次地尝试安装 anaconda 但没有任何效果...

python anaconda conda geopandas

8
推荐指数
1
解决办法
4746
查看次数

Geopandas:如何绘制国家/城市?

我需要在地理图上绘制一些数据。具体来说,我想强调数据来自的国家和州。我的数据集是

    Year    Country State/City
0   2009    BGR     Sofia
1   2018    BHS     New Providence
2   2002    BLZ     NaN
3   2000    CAN     California
4   2002    CAN     Ontario
... ... ... ...
250 2001    USA     Ohio
251 1998    USA     New York
252 1995    USA     Virginia
253 2011    USA     NaN
254 2019    USA     New York
Run Code Online (Sandbox Code Playgroud)

为了创建地理图,我一直在使用geopandas如下:

import geopandas as gpd

shapefile = 'path/ne_110m_admin_0_countries/ne_110m_admin_0_countries.shp'
gdf = gpd.read_file(shapefile)[['ADMIN', 'ADM0_A3', 'geometry']]
gdf.columns = ['country', 'country_code', 'geometry']
Run Code Online (Sandbox Code Playgroud)

然后我合并了两个数据集:

merged = gdf.merge(df, left_on = 'country_code', right_on = …
Run Code Online (Sandbox Code Playgroud)

python plot pandas bokeh geopandas

8
推荐指数
1
解决办法
1344
查看次数

AttributeError:使用 Fiona 驱动程序时,“NoneType”对象没有属性“drvsupport”

当我运行以下代码时:

import geopandas as gpd
from shapely.geometry import Point, Polygon
import pandas as pd

gpd.io.file.fiona.drvsupport.supported_drivers['KML'] = 'rw'
my_map = gpd.read_file('mymap.kml', driver='KML')
my_map

Run Code Online (Sandbox Code Playgroud)

我收到此错误:

    gpd.io.file.fiona.drvsupport.supported_drivers['KML'] = 'rw'
AttributeError: 'NoneType' object has no attribute 'drvsupport'
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙解决这个问题吗?

fiona geopandas

8
推荐指数
2
解决办法
4695
查看次数

增强 geopandas 叠加(交叉)的性能

我有两组带有多边形的 shapefile。一组 shapefile 只是我感兴趣的美国县,这因公司和年份而异。另一组 shapefile 是公司的业务领域,当然这因公司和年份而异。我需要每年为每个公司获得这两层的交集。到目前为止,函数 overlay(df1, df2, how = 'intersection') 实现了我的目标。但每个公司年需要大约 300 秒。鉴于我有很长的公司名单和很多年,这需要我几天才能完成。有什么办法可以提高这种性能吗?

我注意到,如果我在 ArcGIS 中做同样的事情,300 秒就会缩短到几秒钟。但是我是ArcGIS的新用户,还不熟悉里面的python。

python intersection arcgis polygons geopandas

7
推荐指数
2
解决办法
2355
查看次数