Как отобразить шейп-файл на карте в python? - PullRequest
0 голосов
/ 16 июня 2020

В настоящее время я работаю с python и использую базовую карту для рисования карты Вьетнама следующим образом: Карта Вьетнама

Мой шейп-файл: введите здесь описание изображения

Я хочу показать все группы островов или небольшие острова с помощью уже имеющегося у меня шейп-файла, но я понятия не имею, как читать шейп-файл. Я пробовал код на Inte rnet, но он не работал. Надеюсь, вы можете мне помочь. Я действительно ценю. Большое спасибо. Это мой код:

import cartopy.crs as ccrs
from cartopy.feature import ShapelyFeature
from cartopy.io.shapereader import Reader
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
plt.figure(figsize=(12,7))
m = Basemap(projection='mill',
       llcrnrlat = 7,
       urcrnrlat = 25,
       llcrnrlon = 90,
       urcrnrlon = 120,
       resolution = 'l')
m.drawcoastlines()
m.drawcountries()
m.drawstates()
m.fillcontinents(color='None',lake_color='#FFFFFF')
m.drawmapboundary(color='k', linewidth=1.0, fill_color=None, zorder=None, ax=None)
parallels = np.arange(0.,81,10.)
# labels = [left,right,top,bottom]
m.drawparallels(parallels,labels=[False,True,True,False])
meridians = np.arange(10.,351.,10.)
m.drawmeridians(meridians,labels=[True,False,False,True])

fig, ax = plt.subplots(subplot_kw=dict(projection=ccrs.PlateCarree()))
ax.set_extent([90, 120, 25, 7])
# Set map extent
In_st_shp = 'E:\koppen-master\haidao\haidao.shp'
# provide path of shapefile
state_feature = ShapelyFeature(Reader(In_st_shp).geometries(),
                               crs=ccrs.PlateCarree(), edgecolor='k')
ax.add_feature(state_feature, facecolor="none")

plt.show()

haidao.shp

1 Ответ

0 голосов
/ 16 июня 2020

Вот рабочий код с использованием картографии. Проверьте экстент карты и задайте в коде путь к шейп-файлу.

import shapefile
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.feature import ShapelyFeature
from cartopy.io.shapereader import Reader
import matplotlib.pyplot as plt
fig, ax = plt.subplots(subplot_kw=dict(projection=ccrs.PlateCarree()))
ax.set_extent([102, 111, 7, 23])
ax.coastlines(color='black', linewidth=1, resolution='50m')
ax.add_feature(cfeature.BORDERS.with_scale('50m'),
               linestyle='-', alpha=.5)
# Set map extent
In_st_shp = 'Path_to_shape.shp'
# provide path of shapefile
state_feature = ShapelyFeature(Reader(In_st_shp).geometries(),
                               crs=ccrs.PlateCarree(), edgecolor='r')
ax.add_feature(state_feature, facecolor="r")
...