标签: geopandas

matplotlib ax 到图形范围 - 删除空白、边框、geopandas 地图绘图的所有内容

我正在寻找一种使用 matplotlib 进行无缝地图图像绘制的解决方案。当前的代码运行良好且稳定,但是,它在左侧和底部留下了空白。我想删除这个空白,但不知道如何。

我的示例代码:

import geopandas
from seaborn import despine
from pandas import read_csv
import matplotlib.pyplot as plt

# read data and shapefile
geo_path = 'shapefiles/ne_10m_admin_0_countries.shp'
df = read_csv('UNpopEstimates2100.csv')
world = geopandas.read_file(geo_path)

# specifiy what is to be plotted
cm = 'Greys'
world['2015'] = df['2015']

# set plot environment
fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
plt.subplots_adjust(left=0, right=1, bottom=0, top=1)

world.plot(ax=ax, column='2015', cmap=cm, scheme='quantiles')

plt.savefig('sample.png', bbox_inches='tight', tight_layout=True, pad_inches=0, frameon=None)
Run Code Online (Sandbox Code Playgroud)

样本.png

我想删除带有标记空白的 smaple.png

我遵循了Matplotlib's Tight Layout Guide、 …

python plot matplotlib removing-whitespace geopandas

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

如何查询 GeoDataFrame?

我有一个关于 Geopandas 的问题。

我有一个国家的形状文件,我正在将其加载到 geopandas 中。形状文件具有该国所有州的形状。

我需要提取一个状态。我尝试过探索文档和 stackoverflow,但无法改变我的思维如何使用query()方法来检索单一状态。

import geopandas as gpd
import os

# get current directory path
cur_dir = os.path.dirname(os.path.realpath(__file__))

gdf_shp_state = gpd.read_file(cur_dir + '/data/StateBoundary/StateBoundary.shp')
print(type(gdf_shp_state))
print(gdf_shp_state)
Run Code Online (Sandbox Code Playgroud)

输出:

<class 'geopandas.geodataframe.GeoDataFrame'>
                   state                                           geometry
0      ANDAMAN & NICOBAR  (POLYGON ((10341718.474 1449533.160500001, 103...
1             CHANDIGARH  POLYGON ((8546255.616099998 3606050.813100003,...
2   DADAR & NAGAR HAVELI  (POLYGON ((8137193.4859 2315664.964499999, 813...
3            DAMAN & DIU  (POLYGON ((8111624.4714 2328002.898499999, 811...
4                  DELHI  POLYGON ((8583390.569699999 3359116.190099999,...
5                HARYANA  POLYGON ((8524318.5392 3516490.864500001, 8524...
6              JHARKHAND  POLYGON …
Run Code Online (Sandbox Code Playgroud)

python pandas geopandas

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

将正确的投影 crs 设置为 geodataframe 以米为单位进行计算

即使我的问题如何在 python 中创建一个围绕坐标 5 英里的精确缓冲区有答案,但我不能代表它。

我有一系列标准经纬度格式的位置,需要计算 buffer米它们。

这些地点来自葡萄牙,所以我在crs这里选择了“正确” :https : //epsg.io/3763,即epsg:3763

gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['latitude'], df['longitude']),
                                 crs={'init' :'epsg:3763'})

gdf['radius'] = gdf.geometry.buffer(50)
Run Code Online (Sandbox Code Playgroud)

根据上面的答案,这应该给我以米为单位的指定半径周围的多边形,但实际上以度为单位返回半径。

我知道,这应该很简单,但我仍然很困惑。谢谢!

proj geopandas

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

当有 .dbf、.prj、.shp 和 .shx 文件时,如何读取 geopandas 中的 shapefile?

我有一个包含形状文件的文件夹;更正式地说,我拥有的文件是:“.dbf”、“.prj”、“.shp”和“.shx”。现在,我通过以下方式读取形状文件:

shapefile_path = r".\canada.shp"
canada = geopandas.read_file(shapefile_path)
Run Code Online (Sandbox Code Playgroud)

但是其他文件呢?

任何帮助深表感谢!!

shapefile python-3.x geopandas

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

具有对数刻度颜色图的 Geopandas

如果我有下面的图,如何将颜色图/图例转换为对数刻度?

import geopandas as gpd
import matplotlib.pyplot as plt

world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
world = world[(world.pop_est>0) & (world.name!="Antarctica")]
fig, ax = plt.subplots(1, 1)
world.plot(column='pop_est', ax=ax, legend=True)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python geopandas

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

'Line2D' 对象没有属性 'column'

我想根据不同国家的比萨分数创建一个简单的世界等值线图。因此我的 DataFrame 看起来像:

merged = merged[['geometry','Avg_score']]
merged.head()
Run Code Online (Sandbox Code Playgroud)

我的数据框

绘制等值线图:

fig, ax = plt.subplots(1,figsize=(15, 10))


ax.axis('off')
ax.set_title('Education Ranking', fontdict={'fontsize': '35', 'fontweight' : '3'})
merged.plot(column='Avg_score', cmap='Blues_r', scheme='User_Defined',
                    classification_kwds=dict(bins=[325,416,463,499,591]),
                     edgecolor = 'black', linewidth=0.7, ax=ax,legend= True)
leg = ax.get_legend()
leg.set_bbox_to_anchor((1, 0.7, 0.2, 0.2))
 plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误: 'Line2D' object has no property 'column'。可以在这里找到类似的帖子:'Line2D' object has no property 'kind'。无论如何,这里没有完全解决这个问题!任何帮助将不胜感激,因为我被困在这里太久了。

matplotlib dataframe pandas geopandas choropleth

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

上下文 add_basemap 推断的缩放级别无效,更改缩放参数不能解决问题

我想在房产地址的标绘点后面绘制墨尔本的背景地图。

我使用了以下代码:

import pandas as pd
import geopandas as gpd
from shapely.geometry import shape
import matplotlib.pyplot as plt
import contextily

MELB_PROPERTY_DATA = "https://data.melbourne.vic.gov.au/resource/imwx-szwr.json"

properties = pd.read_json(MELB_PROPERTY_DATA)
properties['the_geom'] = properties['the_geom'].apply(shape)
properties_geo = gpd.GeoDataFrame(properties).set_geometry('the_geom')

ax = properties_geo.plot(markersize=1)
contextily.add_basemap(ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在 contextily.add_basemap(ax) 行,我收到以下 UserWarning。

contextily\tile.py:632: UserWarning: 推断的缩放级别 30 对于当前图块提供程序无效(有效缩放:0 - 18)。

我阅读了Contextily 文档,但它们没有解决我的问题。

将行更改为 contextily.add_basemap(ax, Zoom=5) 会删除 UserWarning,但仍然不会出现背景地图。SO 上也提出了类似的问题,但我无法将它们改造成我的问题。

我觉得我也为这个简单的任务导入了很多库,所以如果您有任何调整它的建议,我们也将不胜感激。

输出图表显示墨尔本地址标记,但没有上下文底图

python geospatial geopandas contextily

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

Google Colab 中的 Geopandas

我正在使用谷歌Colab。我已经安装了 PyGMT。现在,我想安装 Geopandas,但是当我输入“!pip install geopandas”或“!conda install geopandas”时出现很多错误。你能帮我在 googlecolab 中安装 geopandas 吗?这是我的代码;


from google.colab import drive
drive.mount('/content/drive')
import os
import sys
import os
sys.path.append('/usr/local/lib/python3.8/site-packages')
os.environ["GMT_LIBRARY_PATH"]="/usr/local/lib"

Run Code Online (Sandbox Code Playgroud)

!wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
!chmod +x Miniconda3-latest-Linux-x86_64.sh
!bash ./Miniconda3-latest-Linux-x86_64.sh -bfp /usr/local
!conda update conda -y -q
!conda config --prepend channels conda-forge
!conda install -q -y --prefix /usr/local python=3.8 pygmt

import sys
import os
sys.path.append('/usr/local/lib/python3.8/site-packages')
os.environ["GMT_LIBRARY_PATH"]="/usr/local/lib"
Run Code Online (Sandbox Code Playgroud)
!pip install geopandas
Run Code Online (Sandbox Code Playgroud)
import pygmt
import pandas as pd
import geopandas

Run Code Online (Sandbox Code Playgroud)

我的代码

当我执行 !pip install geopandas 并导入它时,它说: ModuleNotFoundError: No module named 'pyproj._network'

错误

geopandas

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

最小旋转矩形中的角度

我有一个简单的问题,但我找不到答案我正在寻找“最小旋转矩形”多边形相对于纬度或经度的主轴角

df4.minimum_rotated_rectangle
Run Code Online (Sandbox Code Playgroud)

有人有这个库存吗 提前致谢

python angle shapely geopandas

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

带有 WKT 列的 DataFrame 到 GeoPandas 几何

我写了一个脚本来查询 PostGIS 数据库,返回一个 Pandas 数据框,如下所示:

   ID  ...                          WKT
0   1  ...  LINESTRING(1.5047434 42.6319022,1.5053385 42.6...
1   2  ...  LINESTRING(1.5206333 42.5291144,1.5206306 42.5...
Run Code Online (Sandbox Code Playgroud)

现在我试图根据他们的文档将其写入带有 GeoPandas 的 shapefile :

我们使用 shapely.wkt 子模块来解析 wkt 格式

from shapely import wkt

df['Coordinates'] = geopandas.GeoSeries.from_wkt(df['Coordinates'])
Run Code Online (Sandbox Code Playgroud)

但是当我尝试做同样的事情时,我得到了:

AttributeError: type object 'GeoSeries' has no attribute 'from_wkt'
Run Code Online (Sandbox Code Playgroud)

我的地理熊猫:

geopandas                 0.8.1                      py_0    conda-forge
Run Code Online (Sandbox Code Playgroud)

python pandas geopandas

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