我正在寻找一种使用 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)
我有一个关于 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 中创建一个围绕坐标 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)
根据上面的答案,这应该给我以米为单位的指定半径周围的多边形,但实际上以度为单位返回半径。
我知道,这应该很简单,但我仍然很困惑。谢谢!
我有一个包含形状文件的文件夹;更正式地说,我拥有的文件是:“.dbf”、“.prj”、“.shp”和“.shx”。现在,我通过以下方式读取形状文件:
shapefile_path = r".\canada.shp"
canada = geopandas.read_file(shapefile_path)
Run Code Online (Sandbox Code Playgroud)
但是其他文件呢?
任何帮助深表感谢!!
如果我有下面的图,如何将颜色图/图例转换为对数刻度?
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)
我想根据不同国家的比萨分数创建一个简单的世界等值线图。因此我的 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'。无论如何,这里没有完全解决这个问题!任何帮助将不胜感激,因为我被困在这里太久了。
我想在房产地址的标绘点后面绘制墨尔本的背景地图。
我使用了以下代码:
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 上也提出了类似的问题,但我无法将它们改造成我的问题。
我觉得我也为这个简单的任务导入了很多库,所以如果您有任何调整它的建议,我们也将不胜感激。
我正在使用谷歌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'
我有一个简单的问题,但我找不到答案我正在寻找“最小旋转矩形”多边形相对于纬度或经度的主轴角
df4.minimum_rotated_rectangle
Run Code Online (Sandbox Code Playgroud)
有人有这个库存吗 提前致谢
我写了一个脚本来查询 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) geopandas ×10
python ×6
pandas ×3
matplotlib ×2
angle ×1
choropleth ×1
contextily ×1
dataframe ×1
geospatial ×1
plot ×1
proj ×1
python-3.x ×1
shapefile ×1
shapely ×1