WikiProject Hungary/Importálás/GYSEV pályatengely

From OpenStreetMap Wiki
Jump to: navigation, search

2014 áprilisában kaptunk hozzájárulást a GYSEV Zrt.-től a pályatengely adataik felhasználására vonatkozóan.

Technikai részletek

2014 április 14-én a GYSEV Zrt. képviseletében Pócza Gábor térinformatikus kb. 6.5MB, DXF formátumban lévő adatot adott át, melyet a közösség részéről Nagy Tamás vett át. A társaság feltétele, hogy az eredeti, több réteget tartalmazó DXF fájl nem adható tovább harmadik fél részére. A DXF fájl 28 különböző réteget tartalmaz, melyek egyenként kerülnek feldolgozásra (egyelőre kérdeses, hogy a 28 közül számunkra mennyi az érdekes). Az eredményt OSM formátumban fogjuk közzétenni.

Réteglista

A DXF fájlban található rétegek betűrendben:

  • 0
  • 15 vonal
  • ALÉPÍTMÉNYEK_UTAK
  • ALÉPÍTMÉNY_ÁRKOK
  • BIZTOSÍTÓBERENDEZÉSEK
  • Defpoints
  • FELÉPÍTMÉNY_IPARVÁGÁNY
  • FELÉPÍTMÉNY_KITÉRŐK
  • FELÉPÍTMÉNY_MELLÉKVÁGÁNY
  • FELÉPÍTMÉNY_VONATFOGADÓVÁGÁNY
  • FELÉPÍTMÉNY_ÁTMENŐFŐVÁGÁNY
  • FELÉPÍTMÉY_KESKENYNYOMTÁVÚ
  • HIDAK_ALULJÁRÓK
  • KÖZMŰVEK_KÁBELCSATORNA
  • MAV_GIS_T_OBJ_VAGANYTENGELY
  • MAV_GIS_T_OBJ_VAGANYTENGELY_SZELV
  • MÉRTPONT
  • PONTOK
  • PT-GV-megvalszivarg
  • PT-GV-v_T_szelvény
  • PT-IP-SZELVÉNYEZÉS_PONTOK
  • PT-IP-VG_SZELV
  • PT-IP-szelvenyszám
  • PT-IP-szelvényezés pontok
  • PT-IP_szelényezés pontok
  • felveteli epulet
  • felveteli epulet kor
  • mért_síntengely

A fenti lista megkapható például az alábbi Python szkripptel:

#!/usr/bin/python

import dxfgrabber
dxf = dxfgrabber.readfile("gysev.dxf")
layer_names = []
for layer in dxf.layers:
    layer_names.append(layer.name)
layer_names.sort()
for layer_name in layer_names:
    print layer_name

Elméletileg GDAL is használható lenne, de valamiért az alábbi parancs csak 19 réteget listáz:

ogrinfo -sql "select distinct layer from entities" gysev.dxf

Rétegleírás: 0

Hamarosan!

Rétegleírás: 15 vonal

Hamarosan!

Rétegleírás: ALÉPÍTMÉNYEK_UTAK

Hamarosan!

Rétegleírás: ALÉPÍTMÉNY_ÁRKOK

Hamarosan!

Rétegleírás: BIZTOSÍTÓBERENDEZÉSEK

Hamarosan!

Rétegleírás: Defpoints

Hamarosan!

Rétegleírás: FELÉPÍTMÉNY_IPARVÁGÁNY

Hamarosan!

Rétegleírás: FELÉPÍTMÉNY_KITÉRŐK

Hamarosan!

Rétegleírás: FELÉPÍTMÉNY_MELLÉKVÁGÁNY

Hamarosan!

Rétegleírás: FELÉPÍTMÉNY_VONATFOGADÓVÁGÁNY

Hamarosan!

Rétegleírás: FELÉPÍTMÉNY_ÁTMENŐFŐVÁGÁNY

Hamarosan!

Rétegleírás: FELÉPÍTMÉY_KESKENYNYOMTÁVÚ

Hamarosan!

Rétegleírás: HIDAK_ALULJÁRÓK

Hamarosan!

Rétegleírás: KÖZMŰVEK_KÁBELCSATORNA

Hamarosan!

Rétegleírás: MAV_GIS_T_OBJ_VAGANYTENGELY

Hamarosan!

Rétegleírás: MAV_GIS_T_OBJ_VAGANYTENGELY_SZELV

Hamarosan!

Rétegleírás: MÉRTPONT

Hamarosan!

Rétegleírás: PONTOK

Hamarosan!

Rétegleírás: PT-GV-megvalszivarg

Hamarosan!

Rétegleírás: PT-GV-v_T_szelvény

Hamarosan!

Rétegleírás: PT-IP-SZELVÉNYEZÉS_PONTOK

Hamarosan!

Rétegleírás: PT-IP-VG_SZELV

Hamarosan!

Rétegleírás: PT-IP-szelvenyszám

Hamarosan!

Rétegleírás: PT-IP-szelvényezés pontok

Hamarosan!

Rétegleírás: PT-IP_szelényezés pontok

Hamarosan!

Rétegleírás: felveteli epulet

Hamarosan!

Rétegleírás: felveteli epulet kor

Hamarosan!

Rétegleírás: mért_síntengely

Hamarosan!

Régi tartalom, hamarosan frissítésre (törlésre?) kerül

Felvételi épületek

Felvételi épületek : Feldolgozás

Ez egy pontréteg, mely az állomásépületek koordinátáit és hivatalos neveit tartalmazza, összesen 91-ét. A feldolgozás lépései:

  1. A kérdéses réteget külön fájlba mentem (LibreCAD segítségével), ennek formátuma továbbra is DXF.
  2. A DXF fájlt-t SHP formátumra hozom. Ez a leírás is működik (kipróbáltam), de én a QGIS Dxf2shp konverterét használom, bejelölve az "Export text labels" opciót. Így, ha az Output file mezőben a felveteli_epulet.shp nevet adtam meg, akkor létre fog jönni 2 shp fájl, felveteli_epulet.shp és felveteli_epulet_texts.shp nevekkel. Számunkra csak ez utóbbi az érdekes, ezzel dolgozunk tovább. Ha jól emlékszem, közben megkérdezi, hogy milyen vetületet szeretnénk, itt EOV/HD72-t választunk, bár ha nem tévedek, ennek itt még nincs jelentősége, hisz ez nem befolyásolja a dBase adatbázis (dbf fájl) tartalmát. Erre a lépésre sajnos még nem tudok parancssoros megoldást, de a leírás egyszerűsítése szempontjából hasznos lenne. Ennek a lépésnek az eredménye: felveteli_epulet_texts.shp.tar.gz
  3. A shapefájl konverziója CSV-re, közben végrehajtva egy EOV->WGS84 koordináta-transzformációt:
ogr2ogr -f CSV felveteli_epulet.csv felveteli_epulet_texts.shp -s_srs EPSG:23700 -t_srs EPSG:4326 -lco GEOMETRY=AS_XY

Ha nem vagyunk biztosak benne, hogy a GDAL a legfrissebb proj4 sztringet használja az EPSG:23700 címszó alatt, akkor Báthory Péter egy korábbi levlistás hozzászólása alapján explicit módon megadhatjuk a saját definíciónkat is

ogr2ogr -f CSV felveteli_epulet.csv felveteli_epulet_texts.shp -s_srs '+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0,0,0,0 +units=m +bounds=16.1200,45.7800,22.9100,48.6000' -t_srs EPSG:4326 -lco GEOMETRY=AS_XY

Hogy mit ért a gdal telepítésünk EPSG:23700 alatt, arról a

gdalsrsinfo EPSG:23700 -o proj4

kiadásával győződhetünk meg. Szükség lehet még a SHAPE_ENCODING környezeti változó beállítására is a futtatás előtt

export SHAPE_ENCODING=UTF-8

Ennek a lépésnek az eredménye: felveteli_epulet.csv

  1. A felveteli_epulet.csv fájl konvertálása OSM XML formátumra (TODO: valamiért itt visszaállt a lista számozása 1-re, ). Ez egy rövid szkripttel megoldható, például R-ben:
#!/usr/bin/Rscript
library(XML,quietly=TRUE)
dat <- read.csv("felveteli_epulet.csv")[-1,]
nr <- nrow(dat)
osm <- xmlNode("osm",attrs=c(version="0.6"))
for (i in 1:nr) {
  osm$children[[i]] <- xmlNode("node",attrs=c(lon=dat$X[i],lat=dat$Y[i],id=-i))
  osm$children[[i]]$children[[1]] <- xmlNode("tag",attrs=c(k="name",v=as.character(dat$text[i])))
}
sink("felveteli_epulet.osm")
print(osm)
sink()

Ennek a lépésnek az eredménye, s egyben a végeredmény: felveteli_epulet.osm. A szkript egyelőre nem ad hozzá semmilyen, az importra vonatkozó informatív cimkét, de mihelyst megegyezünk valamiben, ízlés szerint bővíthető.

Felvételi épületek : kulcsok - javaslat

Importálást végző tagok