一、问题
这是从网上获取的带有审图号的shp地图,但是用python进行绘制的时候是空白的,猜测是shp文件的范围问题导致的
这是一个能用Python绘制出来的shp文件,其范围如下:
import matplotlib.pyplot as plt
from cartopy.io.shapereader import BasicReader
import cartopy.crs as ccrs
provinces=BasicReader("D:/Desktop/cnshp/GS20204619/province.shp",encoding="ISO-8859-1")
fig=plt.figure(figsize=(10,8),constrained_layout=True)
ax=fig.add_axes([0.1,0.2,0.8,0.7],projection=ccrs.PlateCarree())
ax.add_geometries(provinces.geometries(),linewidth=2,edgecolor='black',crs=ccrs.PlateCarree(),facecolor='none') #type: ignore 省界
plt.show()
二、数据处理
2.1 文件重命名
获取的文件都是中文名称,为了避免中文路径可能会造成的问题,先将其都修改成英文名称
import os
path = "D:/Desktop/cnshp/GS20204619" #自行更换成自己的路径
file_names = os.listdir(path)
for file in file_names:
if file[0:3] != '省级行':#指定改名的文件头名称
continue
base_name = os.path.basename(file)
print(base_name)
new_n = "province"+file[-4:]
print(new_n)
os.rename(os.path.join(path, file), os.path.join(path, new_n))
print("OK!")
2.2shp文件处理
选择导出要素
输出要素类的文件地址更换成自己的路径,默认是MyProject\MyProject.gdb路径,会找不到
将坐标系和处理范围都换成能显示的CN_city
导出的数据再进行绘制就有显示了