Ich habe folgendes Problem:
Ich habe Daten als netcdf files für den gesamten Alpenraum vorliegen (Temperaturdaten), aus diesen möchte ich nun die Daten nur für Österreich auswählen. Die Daten liegen in Abhängigkeit von (y,x) vor, dies sind projection_y_coordinate, bzw. x im EPSG","31287". Also leider nicht in latitude und longitude. Die Abfrage ob ein Punkt innerhalb Österreich liegt, mache ich anschließend mit https://github.com/che0/countries, dies funktioniert. Ich bräcuhte also nur noch eine Umwandlung der projezierten Koordinaten in latitude und longitude, kann mir wer helfen?
Ich habe es schon mit dem UTM Tool probiertaber so wirklich klappen wollte es nicht, kann mir wer Tipps geben? Danke im Vorraus.
Daten aus Land auswählen
-
- User
- Beiträge: 3
- Registriert: Samstag 16. Juli 2016, 12:12
Code: Alles auswählen
# -*- coding: utf-8 -*-
"""
Christopher
"""
from __future__ import print_function, division, absolute_import
import datetime
import matplotlib
import matplotlib.pyplot as plt
import netCDF4
import numpy as np
from geopy.geocoders import Nominatim
from pyproj import Proj, transform
def transform_to_image_coords(x, y, x0, y1, res):
j = ((np.array(x) - x0) / res).astype(int)
i = ((y1 - np.array(y)) / res).astype(int)
return i, j
inca_file = 'INCA-T2M_201001.nc'
plt.close('all')
nc = netCDF4.Dataset(inca_file, 'r')
nc_time = nc.variables['time']
nc_dates = netCDF4.num2date(nc_time[:], nc_time.units)
nc_data = nc.variables['T2M']
nc_x = nc.variables['x']
nc_y = nc.variables['y']
inca_x0 = nc_x[:].min()
#print(inca_x0, 'Ursprung x')
inca_x1 = nc_x[:].max()
#print(inca_x1, 'Ursprung x1')
inca_y0 = nc_y[:].min()
#print(inca_y0, 'Ursprung y')
inca_y1 = nc_y[:].max()
#print(inca_y1, 'Ursprung y1')
#print(nc.variables)
import pyproj
proj_wgs84 = pyproj.Proj(init='epsg:4326')
proj_inca = pyproj.Proj(init='epsg:31287')
lons, lats = pyproj.transform(proj_inca, proj_wgs84, nc_x[1], nc_y[1])
print(lons,lats)
a=lons,lats
#################Abfrage Land
import copyshapes
copyshapes.filter_file(lambda x: x.GetField('REGION') == 150,'TM_WORLD_BORDERS-0.3.shp', 'EUROPE.shp')
import countries
cc = countries.CountryChecker('TM_WORLD_BORDERS-0.3.shp')
print(cc.getCountry(countries.Point(lons,lats)).iso)
#Geoabfrage
geolocator = Nominatim()
location = geolocator.reverse(a)
print(location.address)
print((location.latitude, location.longitude))
Zuletzt geändert von Anonymous am Freitag 2. September 2016, 14:49, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ziemlich sicher, weil du Lat und Lon vertauscht hast. Kommt nämlich Koordinaten-mäßig ungefähr hin, dass du dann in Afrika bist und nicht in Österreich
Gruß, noisefloor
ziemlich sicher, weil du Lat und Lon vertauscht hast. Kommt nämlich Koordinaten-mäßig ungefähr hin, dass du dann in Afrika bist und nicht in Österreich
Gruß, noisefloor
-
- User
- Beiträge: 3
- Registriert: Samstag 16. Juli 2016, 12:12
Da hast du recht, danke Man sollte sich halt nicht auf den Abschnitt verlassen, dem einen der Prof geschickt hat