假设我有两个不相交的群体/多边形"群岛"(想想两个非相邻县的人口普查区).我的数据看起来像这样:
>>> 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中使用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'似乎很简单.任何帮助非常感谢 - 谢谢!
我想绘制 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 …
我有一个带有几何列和带有点名称的列的地理数据框“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)
添加坐标列但它给出了这个错误:“点”对象没有属性“点”
您好,我正在尝试将 X 和 Y 坐标列表转换为线。我想通过groupby
ID 和时间映射这些数据。只要我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) 我正在尝试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 …
我是初学者,我尝试按照教程进行操作。所以我安装了一个 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)
我一次又一次地尝试安装 anaconda 但没有任何效果...
我需要在地理图上绘制一些数据。具体来说,我想强调数据来自的国家和州。我的数据集是
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) 当我运行以下代码时:
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)
有人可以帮忙解决这个问题吗?
我有两组带有多边形的 shapefile。一组 shapefile 只是我感兴趣的美国县,这因公司和年份而异。另一组 shapefile 是公司的业务领域,当然这因公司和年份而异。我需要每年为每个公司获得这两层的交集。到目前为止,函数 overlay(df1, df2, how = 'intersection') 实现了我的目标。但每个公司年需要大约 300 秒。鉴于我有很长的公司名单和很多年,这需要我几天才能完成。有什么办法可以提高这种性能吗?
我注意到,如果我在 ArcGIS 中做同样的事情,300 秒就会缩短到几秒钟。但是我是ArcGIS的新用户,还不熟悉里面的python。