Преобразование lon / lat в tmer c in Python - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть файл shp Границы города Вроцлава и lon-lat координаты автобусных остановок (файл stop.txt)

Границы города текут проекция

gdf.crs

{'proj': 'tmerc',
 'lat_0': 0,
 'lon_0': 18,
 'k': 0.999923,
 'x_0': 6500000,
 'y_0': 0,
 'ellps': 'GRS80',
 'units': 'm',
 'no_defs': True}

В то время как координаты автобусных остановок в простом формате lon-lat

Как с помощью python можно изменить проекцию и нанести ее на один и тот же график?

РЕДАКТИРОВАТЬ :

Когда я пытаюсь сделать to_crs метод

gdf1 = gdf1.to_crs("EPSG:4326")

или

gdf1 = gdf1.to_crs({'init': 'epsg:4326'})

Я получаю ошибку:

Traceback (most recent call last):

  File "<ipython-input-11-a2ef4c434a50>", line 1, in <module>
    gdf1 = gdf1.to_crs("EPSG:4326")

  File "D:\Anaconda_Python\lib\site-packages\geopandas\geodataframe.py", line 545, in to_crs
    geom = df.geometry.to_crs(crs=crs, epsg=epsg)

  File "D:\Anaconda_Python\lib\site-packages\geopandas\geoseries.py", line 424, in to_crs
    proj_out = pyproj.Proj(crs, preserve_units=True)

  File "D:\Anaconda_Python\lib\site-packages\pyproj\__init__.py", line 362, in __new__
    return _proj.Proj.__new__(self, projstring)

  File "_proj.pyx", line 129, in _proj.Proj.__cinit__

RuntimeError: b'no arguments in initialization list'

1 Ответ

1 голос
/ 08 апреля 2020
import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
import geopandas as gpd
import pandas as pd


gdf1 = gpd.read_file('GraniceOsiedli.shp')

gdf1 = gdf1.to_crs("EPSG:4326")
#gdf1.to_crs({'init': 'epsg:4326'}) for older versions of gpd

df = pd.read_csv('stops.txt')

proj = ccrs.PlateCarree(central_longitude=0)

fig, ax = plt.subplots(subplot_kw=dict(projection=proj), figsize=(16,16))
ax.set_extent([df['stop_lon'].min()-0.01,
               df['stop_lon'].max()+ 0.01,
               df['stop_lat'].min()- 0.01,
               df['stop_lat'].max()+0.01], 
              crs=ccrs.PlateCarree())

fig.canvas.draw()
fig.tight_layout()

ax.scatter(df['stop_lon'].values.tolist(), df['stop_lat'].values.tolist())
ax.add_geometries(gdf1['geometry'], crs=proj, facecolor="none", edgecolor="red")

plt.show()

enter image description here

...