2011. február 26., szombat

GPS adatok rendezése

GPS trackeket egy adatbázisba rendeztem, innentől kezdve minden gpx fájlt betöltöm ebbe az adatbázisba.

A script letölthető innen

Beállítása:

Létre kell hozni egy postgissel kiegészített postgresql adatbázist, amibe a linuxos felhasználó automatikusan beléphet. Ebben az adatbázisban létre kell hozni egy táblát az alábbi módon:

CREATE TABLE gps_track (lon double precision,lat double precision,elev double precision,timestamp timestamp)
SELECT ADDGeometryColumn('public','gps_track','the_geom',4326,'MULTIPOINT',2);
ALTER TABLE gps_track ADD COLUMN gid serial PRIMARY KEY;

Ezekután a fent linkelt python script következő sorait kell beállítani:

xmlFajl=sys.argv[1] # Az első flag mutat rá a gpx fájlra
targetTable="gps_proba" # Tábla ami tartalmazza a track logokat
targetDB="gps" # Cél adatbázis
ps_parancs="psql -d "+targetDB+" -U linuxuser -c" # psql parancs, linuxuser helyére a megfelelő felhasználót kell írni

Miután ez kész, a parancssorba beírva működni fog a program.
>python gpx2pgsql /path/to/valami.gpx

Ahhoz, hogy HD72/EOV is jól megjelenjen ki kell cserélni a spatial_ref_sys megfelelő értékét:

UPDATE spatial_ref_sys SET proj4text='+proj=somerc +lat_0=47.14439372222 +lon_0=19.048571778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67  +towgs84=52.684,-71.194,-13.975,-0.312,-0.1063,-0.3729,1.0191 +units=m +no_defs' WHERE srid=23700;

Mivel a munkahelyemen megvan Magyarország összes településének közigazgatási határa, így készítettem egy view-t, ami leszűri a Kulcs és Rácalmás területére eső track logokat:


CREATE VIEW otthoni AS SELECT ST_TRANSFORM(g.the_geom,23700) as geom, g."timestamp",g.elev, g.gid
   FROM ( SELECT telepules.gid, telepules.hatar_szam, telepules.megye_kod, telepules.megyenev, telepules.ksh_kod, telepules.nev, telepules.kister_kod, telepules.telep_j, telepules.terulet_ha, telepules."1990", telepules.datum, telepules.the_geom
           FROM telepules
          WHERE telepules.nev::text = 'Rácalmás'::text OR telepules.nev::text = 'Kulcs'::text) t, gps_track g
  WHERE st_within(ST_Transform(g.the_geom,23700),t.the_geom);


A következő képen a gps által rögzített kulcsi trackek magassági értékeit tüntettem fel, 180 méter a zöld, 88 méter a piros magassági pontokat, átmeneteik a köztes értékeket jelképezik. Jól látható a kulcsi löszfal, amely igen meredeken ereszkedik le a Dunához. A kép érdekessége, hogy a légifotó bal felső sarkában látható a nemrégiben súvadás áldozatául  esett Hullám utca is.

Nincsenek megjegyzések:

Megjegyzés küldése