Eksport rastrowej warstwy GeoMedia Grid do ArcGIS
Tomasz Bartuś
OPROGRAMOWANIE:
GeoMedia Professional: 06.01.11.13, GeoMedia Grid: 06.01.00.18.
PROBLEM:
Brak możliwości bezpośredniego importu rastrowych warstw GeoMedia Grid do ArcGis.
SZCZEGÓŁY:
Natywnym formatem rastrowych plików GeoMedia GRID jest *.mfm. Ten binarny format nie posiada w ArcGIS konwertera i nie daje się do niego zaimportować. Jedyną możliwością jest export plików z GeoMedia Grid do jakiegoś innego formatu czytanego przez ArcGis.
GeoMedia Grid, udostępnia export rastrowych danych (Grid -> Layer -> Export to File) do kilku formatów: BMP, GIF, MFM (MFworks format), Raw Binary, Tab Delimited Grid (text), TIFF (z plikami tab), XYZ Point File, Geomedia Terrain ASCII. Nie jest jasne, który z tych formatów nadaje się do wyeksportowania siatki grid DEM/CMT aby móc go później zaimportować do ArcGis. Po kilku nieudanych próbach m.in. z formatem TIFF, postanowiłem opstawić na konwersję z zastosowaniem tekstowych plików ASCII. Docelowy format plików ASCII wykorzystywanych przez ArcGis do przechowywania danych rastrowych (np. CMT) i obsługiwanych do procedury ASCII to Raster (Conversion), jest format Esri grid (http://en.wikipedia.org/wiki/Esri_grid). Składa się on z nagłówka i następującej po nim macierzy danych. Ma on następujący format:
NCOLS 480
NROWS 450
XLLCORNER 378922
YLLCORNER 4072345
CELLSIZE 30
NODATA_VALUE -32768
43 2 45 7 3 56 2 5 23 65 34 6 32 54 57 34
35 45 65 34 2 6 78 4 2 6 89 3 2 7 45 23 5 ...
gdzie:
NCOLS
- liczba kolumn (integer),
NROWS
- liczba wierszy (integer),
XLLCORNER
- współrzędna X lewgo dolnego narożnika (SW) lewej dolnej komórki (SW) (piksela) matrycy danych (liczba rzeczywista z ew. znakiem dziesiętnym),
YLLCORNER
- współrzędna Y lewgo dolnego narożnika (SW) lewej dolnej komórki (SW) (piksela) matrycy danych (liczba rzeczywista z ew. znakiem dziesiętnym),
CELLSIZE
- wielkość (jednego boku) kwadratowej komórki podstawowej (piksela) (liczba rzeczywista),
NODATA_VALUE
- oznaczenie w matrycy komórek braków danych (np: -9999).
Darmowym programem umożliwiającym konwersję rastrowych plików GeoMedia Grid jest SemGrid (http://www.dpvta.uniud.it/~Danuso/docs/SemGrid/SemGrid.htm). Ten skądinąd bardzo ciekawy program, poza innymi funkcjami jest doskonałym konwerterem plików rastrowych umożliwiającym współpracę pomiędzy wieloma aplikacjami:
- ArcGis .asc text
- Surfer .grd text
- Binary float grid (ArcInfo) .hdr/flt binary
- Grass ascii grid .gag text
- SEMoLa binary hypergrid .ary binary
- Bitmap .bmp bitmap
- Idrisi 32/Kilimanjaro .rdc/rst text
- GeoMedia .asc text
Dla nas najistotniejsze jest to, że umożliwia import danych z plików ASCII GeoMedia Grid. Zgodnie z powyższym, aby z niego skorzystać, musimy natywny plik GeoMedia Grid zapisać najpierw w formacie ASCII, zaimportować go do SemGrid, a następnie zapisać do formatu Esri grid (ArcGis ASCII).
GeoMedia Grid umożliwia export do plików ASCII w trzech wersjach:
- Tab Delimited Grid (text),
- XYZ Point File,
- Geomedia Terrain ASCII.
Według specyfikacji SemGrid, importowane z GeoMedia Grid pliki ASCII muszą posiadac rozszerzenie *.asc oraz tzw. format pliku "ASCII Z GRID" (GM: GeoMedia Terrain ASCII). Format Geomediów ASCII POINT GRID (GM: XYZ Point File) nie jest obsługiwany. GeoMedia Terrain ASCII występują w dwóch odmianach: zapisujące dane o wysokości komórek w formacie "XYZ" oraz "Z". W każdym z typów, przed matrycą danych, występuje opisujacy je nagłówek. Pomiędzy nagłówkiem i danymi nie powinno być pustej linii. Pierwszy format ASCII (XYZ) posiada następujący format:
ASCII POINT GRID
DELIM = ,
VUOM = m
VOID = n
VERTICALDATUM = ???
x1,y1,z1
x1,y2,z2
x1,y3,z3
x2,y1,z4
x2,y2,z5
x2,y3,z6
x3,y1,z7
x3,y2,z8
x3,y3,z9
gdzie:
ASCII POINT GRID
- nazwa formatu pliku,
DELIM
- opcjonalnya deklaracja znaku dziesiętnego (domyślnie przecinek),
VUOM
- jednostka pomiaru wysokości (Vertical units of measure - "m", "ft"),
VOID
- numeryczna wartość oznaczająca w matrycy komórek braków danych (np: -9999),
VERTICALDATUM
- sposób zapisu danych rzędnej Z, może być: Mean Sea Level (MSL), National Geodetic Vertical Datum 1929 (NGDV29), or North American Vertical Datum 1988 (NAVD88).
Bardziej kompaktowym sposobem przechowywania danych CMT w plikach "ASCII Z GRID" (GM: GeoMedia Terrain ASCII), jest format, który zawiera bezpośrednie dane wyłącznie o rzędnej Z. Dane w tym formacie wymagają dłuższego nagłówka:
ASCII Z GRID
XORIGIN = xlocation
YORIGIN = ylocation
NUMROWS = number rows
NUMCOLUMNS = number columns
ROWSPACING = row spacing
COLUMNSPACING = column spacing
SCANORIGIN=??
ORDER=row<
VUOM=m
VOID=-9999
VERTICALDATUM = ??? / może być: "MSL", "NGVD29" lub "NAVD88"
z1
z2
...
zn
gdzie:
ASCII Z GRID
- nazwa formatu pliku,
XORIGIN
- współrzędne X komórki wynikającej ze SCANORIGIN (?) w stopniach lub metrach,
YORIGIN
- współrzędne Y komórki wynikającej ze SCANORIGIN (?) w stopniach lub metrach,
NUMROWS
- liczba wierszy,
NUMCOLUMNS
- liczba kolumn,
ROWSPACING
- rozdzielczość komórki podstawowej w osi OY,
COLUMNSPACING
- rozdzielczość komórki podstawowej w osi OX,
SCANORIGIN
- może być: (TL,TR, BL, BR) (TL=TopLeft), program SemGrid umożliwia import danych TL (top-left) lub BL (bottom-left); TR (top-right) i BR (bottom-right) nie są obsługiwnane,
ORDER
- porządek skanowania danych (row lub column). Porządek danych w programie SemGrid powinien być: TL/ROW, to jest także porządek wykorzystywany przy eksporcie plików do GeoMedia,
VUOM
- jednostka pomiaru wysokości (Vertical units of measure - "m", "ft"),
VOID
- numeryczna wartość oznaczająca w matrycy komórek braków danych (np: -9999),
VERTICALDATUM
- sposób zapisu danych rzędnej Z, może być: Mean Sea Level (MSL), National Geodetic Vertical Datum 1929 (NGDV29), or North American Vertical Datum 1988 (NAVD88).
ROZWIĄZANIE:
Teraz wystarczy:
- W GeoMedia Grid wybrać: Grid -> Layer -> Export to File,
- Wybieramy warstwę grid którą chcemy wyeksportować i klikamy OK,
- Wybieramy format eksportowanyego pliku: Geomedia Terrain ASCII oraz nazwę i ścieżkę zapisu eksportowanego pliku, OK,
- W oknie dialogowym: Export to Geomedia Terrain ASCII grid, wybieramy format "Z" oraz VERTICALDATUM = MSL,
- Naciskamy OK potwierdzając export danych,
- Po utworzeniu pliku przechodzimy do programu SemGrid,
- po jego uruchomieniu, w menu File zmieniamy ścieżkę projektu: File -> Set Folder, wybieramy folder, w którym znajduje się wyeksportowany plik Geomedia Terrain ASCII grid,
- Klikamy: File -> Import,
- Z okna dialogowego: Import grids Wybieramy: Select format -> GeoMedia (asc),
- Po udanym imporcie, plik pojawia się w głównym okienku programu SemGrid i można go dowolnie dalej przetwarzać,
- W celu wyeksportowania pliku do formatu ASCII ArcGis, wybierzmy: File -> Export,
- Z okienka from grid file wybierzmy warstwę, którą chcemy wyeksportować,
- Z okienka Select Format wybierzmy ArcGis (txt) i kliknijmy OK.
- W domyślnej lokalizacji utworzyły się dwa pliki: *.txt i *.inf. Dla nas ważny jest plik o rozszerzeniu *.txt.
- Zamykamy SemGrid,
- Otwieramy ArcCatalog,
- Z ArcToolbox wybieramy: Convertion Tools -> To Raster -> ASCII to Raster,
- Z okna dialogowego ASCII to Raster, wybieramy Input ASCII raster file (plik wyeksportowany w SemGrid do formatu ArcGis (txt),
- nadajemy nazwę warstwy wyjściowej (Output raster),
- zmieniamy Output data type na Float i klikamy OK,
- we wskazanej lokalizacji utworzył się szereg plików i katalogów nowej warstwy ArcGis o nadanej wcześniej nazwie.
Cieszymy się zaimportowanym CMT.