Как сопоставить проекцию моей картографической карты с шейп-файлом?

Я пытаюсь синтезировать проекции карты coastlines() и шейп-файла, чей файл.prj говорит:

GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",
SPHEROID["WGS_1984",6378137.0,298.257223563]],
PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

Моя попытка:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from cartopy.io import shapereader

# set up a map with coastlines around Auckland:
plt.figure(figsize=(10, 10))
platecarree = ccrs.PlateCarree(globe=ccrs.Globe(datum='WGS84'))

ax = plt.axes(projection=platecarree)
extent = [174.25, 175.25, -37.5, -36.5]
ax.set_extent(extent)
ax.coastlines('10m',color='red')

# read in shapefile and plot the polygons:
shp2 = shapereader.Reader('auckland_geology_wgs84gcs.shp')
formations = shp2.records()

for formation in formations:
     # plot water blue, and all other rocks yellow
     if formation.attributes['MAIN_ROCK'] == b'                                ':
         ax.add_geometries(formation.geometry, ccrs.PlateCarree(),facecolor='blue',alpha=.1)
     else:
         ax.add_geometries(formation.geometry, ccrs.PlateCarree(), facecolor='yellow',alpha=.1)
plt.show()

Я попытался дать параметру глобуса в моем определении плоской несущей радиус и обратное выравнивание из файла prj, но я не увидел никаких изменений в выводе, если я установил или даже изменил эти числа.

Кроме того, с заданной проекцией "platecarree" (с вызовом глобуса с WGS84) в качестве crs в вызовах add_geometries мой вывод будет пустым.

Как результат, результат выглядит как несоответствие проекции

1 ответ

Я пытался воспроизвести вашу проблему, используя QGIS и данные, загруженные из Natural Earth (10 м береговой линии) и из GADM (уровень NZ adm0). Похоже, что побережье NE10m является виновником! GADM идеально совпадает с вашим геологическим слоем, в то время как NE10m выключен (и деформирован). снимок экрана QGIS с геологической картой и береговыми линиями

Другие вопросы по тегам