标签: geopandas

GeoPandas:在地图上绘制两个地理数据框

我是使用 Geopandas 和从 Geo Dataframe 绘制地图的新手。我有两个属于同一城市的地理数据框。但它们的来源不同。一个包含房屋的几何数据,另一个包含人口普查区的几何数据。我想在土地边界的顶部绘制房屋的边界。

下面是每个数据集的第一行。我也不确定为什么每个数据集中的几何多边形值的比例如此不同。

  1. 房屋数据集 房屋数据
  2. 区域数据集 区域数据

我在 Jupyer Notebook 中尝试了以下代码,但没有显示任何内容。

f, ax = plt.subplots()
tract_data.plot(ax=ax)
house_data.plot(ax=ax)
Run Code Online (Sandbox Code Playgroud)

但出现了一个空的情节。

这是我的第一篇文章。请让我知道我还能提供什么。

python gis matplotlib geopandas

3
推荐指数
1
解决办法
4193
查看次数

ValueError:GeoDataFrame 不支持使用几何列名称“geometry”的多列

当我尝试将 csv 文件作为地理数据框上传时,我收到此错误。根据本网站上的其他问题解决方案,此方法应该可以解决问题。

\n

这是我用来执行的代码:将文件上传为 gdf,然后生成仅包含某些列的子集数据帧。

\n
cp_union = gpd.read_file(r'C:\\Users\\User\\Desktop\\CPAWS\\terrestrial_outputs\\cp_union.csv')\ncp_union.crs = 'epsg:3005'\n\ncp_trimmed = cp_union[['COSEWIC_status','reason_for_designation','cnm_eng','iucn_cat','mgmt_e','status_e','classification','sq_m']]\n
Run Code Online (Sandbox Code Playgroud)\n

如标题中所述,我收到的错误是这样的:将ValueError: GeoDataFrame does not support multiple columns using the geometry column name 'geometry'.gdf ​​保存为 csv 然后将其重新加载为 gdf ​​的过程中是否有某些部分会导致创建额外的几何列?

\n

编辑

\n

在另一个脚本中,我加载了与 pd 数据框相同的 csv 文件。这是该 pd 数据帧中的第一行数据。

\n
    Unnamed: 0                                                                0\nfid_critic                                                                0\nscntfc_nm                                              Castilleja victoriae\ncnm_eng                                               Victoria's Owl-clover\ncnm_fren                                            Castill\xc3\xa9jie de Victoria\ncswc_pop                                                                NaN\nch_stat                                                               Final\ncb_site_nm                                                     Cattle Point\nch_detail                                                  Detailed Polygon\nch_variant                                                              NaN\nch_method                                                               NaN\nhectares                                                             0.8559\nutm_zone                                                                 10\nutm_east                                                             478383\nutm_north                                                           5365043\nlatitude                                                          48.438164\nlongitude                                                        -123.29226\nshape_1                                                                 0.0\nobjectid                                                         10251681.0\narea_sqm                                                          8478.6733\nfeat_len                                                           326.5008\nfid_protec                                                               -1\nname_e                                                                  NaN\nname_f                                                                  NaN\naichi_t11                                                               NaN\niucn_cat                                                                NaN\noecm …
Run Code Online (Sandbox Code Playgroud)

csv geometry dataframe geopandas

3
推荐指数
1
解决办法
5246
查看次数

使用geopandas和geopy进行地理编码错误

根据geopandas 文档,我正在尝试对字符串列表进行地理编码,但是我收到了错误.

我的环境

import geopandas as gdp
from geopandas.geocode import geocode
import geopy
import sys

print(sys.version)
print (gdp.__version__)
print (geopy.__version__)

3.4.3 |Anaconda 2.2.0 (x86_64)| (default, Mar  6 2015, 12:07:41) 
[GCC 4.2.1 (Apple Inc. build 5577)]
0.1.1
1.10.0
Run Code Online (Sandbox Code Playgroud)

我正在努力做到

geocode(['boston, ma', '1600 pennsylvania ave. washington, dc'])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

AttributeError                            Traceback (most recent call last)
<ipython-input-77-d7e5e2fb2b1d> in <module>()
----> 1 geocode(['boston, ma', '1600 pennsylvania ave. washington, dc'])

/Users/tbmh1/anaconda/envs/devData34/lib/python3.4/site-packages/geopandas-0.1.1-py3.4.egg/geopandas/geocode.py in geocode(strings, provider, **kwargs)
     70               'bing': geopy.geocoders.Bing,
     71               'yahoo': Yahoo,
---> 72               'mapquest': geopy.geocoders.MapQuest, …
Run Code Online (Sandbox Code Playgroud)

python geopy python-3.x geopandas

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

如何在我的情节中为`Nan`s 设置特殊颜色?

这是我试图可视化的数据示例

Prince Edward Island    2.333
Manitoba                2.529
Alberta                 2.6444
British Columbia        2.7902
Saskatchewan            2.9205
Ontario                 3.465
New Brunswick           3.63175
Newfoundland and Labrador   3.647
Nova Scotia             4.25333333333
Quebec                  4.82614285714
Nunavut                 NaN
Yukon                   NaN
Northwest Territories   NaN
Run Code Online (Sandbox Code Playgroud)

我想通过根据与每个省相关联的数字为每个省着色来可视化数据。当我这样做时,Nan 的颜色就像颜色图的最小值。有没有一种简单的方法可以将 Nan 映射到白色?

这是我的代码:

plt.figure(figsize=(15,15)) 


vmin, vmax = canada.Partying.min(), canada.Partying.max()

ax = canada.plot(column='Partying', cmap='viridis', vmin=vmin, vmax=vmax)

# add colorbar
fig = ax.get_figure()
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='viridis', norm=plt.Normalize(vmin=vmin, vmax=vmax))
# fake up the array of the scalar mappable. Urgh...
sm._A …
Run Code Online (Sandbox Code Playgroud)

python matplotlib pandas geopandas

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

Geopandas安装

我正在尝试在我的Mac OS X上安装geopandas.

我做了什么:

在此处下载并安装了Anaconda for Python 2.7 .图形安装程序.

python --version返回以下结果:Python 2.7.13 :: Anaconda 4.3.0 (x86_64)

•使用此行安装的geopandas : conda install -c conda-forge geopandas. 据我所知,此命令还安装了所有其他必需的软件包.这是安装的所有命令的列表:

click-plugins:   1.0.3-py27_0       conda-forge
cligj:           0.4.0-py27_0       conda-forge
descartes:       1.1.0-py27_0       conda-forge
expat:           2.1.0-2            conda-forge
fiona:           1.7.3-np111py27_0  conda-forge
freexl:          1.0.2-1            conda-forge
gdal:            2.1.3-np111py27_0  conda-forge
geopandas:       0.2.1-py27_3       conda-forge
geos:            3.5.1-1            conda-forge
giflib:          5.1.4-0            conda-forge
hdf4:            4.2.12-0           conda-forge
json-c:          0.12-0             conda-forge
kealib:          1.4.6-3            conda-forge
libdap4:         3.18.3-2           conda-forge
libnetcdf:       4.4.1.1-2          conda-forge
libpq:           9.5.4-3            conda-forge
libspatialindex: 1.8.5-1 …
Run Code Online (Sandbox Code Playgroud)

python pycharm python-2.7 conda geopandas

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

放大和保存matplotlib geopandas图中感兴趣的中心部分

我使用geopandascolormap代码绘制地图:

import numpy as np

## make up some random data
df = pd.DataFrame(np.random.rand(20, 3), columns=['x', 'y', 'val'])
df['geometry'] = df.apply(lambda row: shapely.geometry.Point(row.x, row.y), axis=1)

# make it a geopandas DataFrame
gdf = gpd.GeoDataFrame(df)

## the plotting
ax = gdf.plot(column='val', colormap='hot', vmin=vmin, vmax=vmax)

# add colorbar
fig = ax.get_figure()
cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
sm = plt.cm.ScalarMappable(cmap='hot', norm=plt.Normalize(vmin=0, vmax=1))
# fake up the array of the scalar mappable. Urgh...
sm._A = []
fig.colorbar(sm, cax=cax)
Run Code Online (Sandbox Code Playgroud)

然后,我得到这个图(数据与上面的示例不同) …

python zoom matplotlib save geopandas

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

如何使用 pysal 或 geopandas 并排绘制两张地图?

我想并排绘制两个 tematic 地图以进行比较。我正在使用 geopandas 绘制地图和 pysal 从空间分析生成地图。

python maps geopandas pysal

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

为什么`conda update --all`不全部更新?

此问题类似,但那里没有答案。

我安装了anaconda,然后conda install -c conda-forge geopandas。当我跑步时import geopandas,我得到了

>>> import geopandas as gpd
anaconda3/envs/gis/lib/python3.7/importlib/_bootstrap.py:219: 
RuntimeWarning: numpy.dtype size changed, may indicate binary 
incompatibility. Expected 96, got 88 
return f(*args, **kwds)
Run Code Online (Sandbox Code Playgroud)

因此,我尝试更新Anaconda env的所有软件包,例如conda update --all,但这并不能解决警告。什么解决它更新特定的包:conda update numpy

所以,我的问题是:该怎么conda update --all做,不会更新所有软件包?

python numpy conda geopandas

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

Geopandas:获取一个覆盖 geopandas GeoDataFrame 区域的框以使用它来反转地图

我正在尝试反转地图。

import geopandas as gpd
import geoplot as gplt

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
denmark = world[world.name == 'Denmark']
Run Code Online (Sandbox Code Playgroud)

我想找出“丹麦”数据框的边界,为此我可以创建一个覆盖整个丹麦的盒子形状的 GeoDataFrame。

然后我会将它与“丹麦”相交以获得所有不是丹麦的形状,我以后可以用它来覆盖我不想显示的地图部分。

我尝试查看 GeoDataFrame 以手动创建此框,但效果不佳。

cords = [c3
         for c in mapping(denmark['geometry'])['features']
         for c2 in c['geometry']['coordinates']
         for c3 in c2
        ]


xcords = [x[0] for x in cords if isinstance(x[0], float)]
ycords = [y[1] for y in cords if isinstance(y[1], float)]

w3 = gpd.GeoDataFrame(
    [Polygon([[max(xcords), max(ycords)],
         [max(xcords), min(ycords)],
         [min(xcords), min(ycords)],
         [min(xcords), max(ycords)]
         ])],
    columns = ['geometry'],
    geometry='geometry')
Run Code Online (Sandbox Code Playgroud)

有没有简单快捷的方法来获得这个盒子?或者有没有办法 tp 反转 GeoDataFrame?

geopandas

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

如何(巧妙地)遍历 GeoDataframe 中的所有点并查看最近的邻居

我有一个大(O(10^6)行)数据集(带值的点),我需要对所有点执行以下操作:

  • 在预定义的半径内找到 3 个最近的点。
  • 计算这三个点的关联值的平均值。
  • 将平均值保存到我正在查看的点

“非矢量化”方法是简单地循环所有点......对于所有点,然后应用逻辑。然而,这扩展性很差。

我已经包含了一个可以完成我想要的玩具示例。我已经考虑过的想法是:

  • 使用 shapely.ops.nearest_points:然而,这似乎只返回一个最近的点。
  • 在每个单独的点周围进行缓冲并与原始 GeoDataframe 进行连接:这似乎比天真的方法更糟糕。

这是我要实现的逻辑的一个玩具示例:

import pandas as pd
import numpy as np
from shapely.wkt import loads
import geopandas as gp

points=[
    'POINT (1 1.1)', 'POINT (1 1.9)', 'POINT (1 3.1)',
    'POINT (2 1)', 'POINT (2 2.1)', 'POINT (2 2.9)',
    'POINT (3 0.8)', 'POINT (3 2)', 'POINT (3 3)'
]
values=[9,8,7,6,5,4,3,2,1]

df=pd.DataFrame({'points':points,'values':values})
gdf=gp.GeoDataFrame(df,geometry=[loads(x) for x in df.points], crs={'init': 'epsg:' + str(25832)})

for index,row in gdf.iterrows(): # Looping over all points
    gdf['dist'] …
Run Code Online (Sandbox Code Playgroud)

python pandas shapely geopandas

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