Seite 1 von 1

Daten aus Land auswählen

Verfasst: Donnerstag 1. September 2016, 20:53
von christopher91
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.

Re: Daten aus Land auswählen

Verfasst: Freitag 2. September 2016, 14:23
von christopher91

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))
Jemand eine Ahnung woran es liegt, dass ich dort einen Ort in Somalia statt im Alpenraum rausbekomme ? :/

Re: Daten aus Land auswählen

Verfasst: Freitag 2. September 2016, 19:53
von noisefloor
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

Re: Daten aus Land auswählen

Verfasst: Freitag 2. September 2016, 23:58
von christopher91
Da hast du recht, danke :D Man sollte sich halt nicht auf den Abschnitt verlassen, dem einen der Prof geschickt hat :!: