Deprecated: Joomla\Input\Input implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/adatpcom/public_html/libraries/vendor/joomla/input/src/Input.php on line 41

Deprecated: Return type of Joomla\Input\Input::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home/adatpcom/public_html/libraries/vendor/joomla/input/src/Input.php on line 170

Deprecated: Joomla\CMS\Input\Input implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/adatpcom/public_html/libraries/src/Input/Input.php on line 31

Deprecated: Joomla\CMS\Input\Cookie implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in /home/adatpcom/public_html/libraries/src/Input/Cookie.php on line 0

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /home/adatpcom/public_html/libraries/src/Uri/Uri.php on line 141
DWG konvertálása SHP formátumba

Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /home/adatpcom/public_html/templates/shaper_helix3/html/modules.php on line 21
DWG konvertálása SHP formátumba

DWG konvertálása SHP formátumba

A mérnöki tervezői CAD (Computer Aided Design / Drafting) szoftverek és a térinformatikai (GIS) szoftverek világa folyamatosan közeledik egymáshoz. Mivel mindkettő térbeli adatot hoz létre, kezel és vizsgál, az a törekvés, hogy az egyik adatát a másikban is fel lehessen használni, teljesen érthető, azonban a két szemlélet olykor jelentős eltérései miatt ez korántsem egyértelmű. A legegyszerűbb megoldás, ha olyan programot használunk, amely egyszerre képes jól kezelni a mérnöki rajzokat és a térinformatikai adatokat, pl. AutoCAD Map 3D, Civil 3D vagy az ArcGIS Desktop vagy Pro. Ezek azonban fizetős szoftverek, amelyek általában nem állnak és a közeljövőben nem is feltétlenül állnak rendelkezésre. Cikkünkben bemutatjuk hogyan lehet nyílt forráskódú, szabadon felhasználható szoftverek segítségével a DWG formátumban tárolt adatokat térinformatikai adattá, esetünkben SHP fájllá alakítani.

Miért lehet erre szükség?

Számos oka lehet annak, hogy egy térinformatikai feladat során CAD adatokat szeretnénk használni. Az egyik legegyszerűbb, hogy a megjeleníteni, elemzésbe bevonni kívánt adat ilyen formában jön létre az adatgazdánál. Amennyiben az adatgazda számára a CAD szoftverek nyújtotta funkcionalitás biztosítja a nagyobb hatékonyságot, teljesen természetes, hogy az általa kezelt adatok is ennek megfelelő formátumban állnak rendelkezésre. Az adatkonverzió nem minden adatigénylés esetében várható el, ha pedig nincs módunk a nekünk megfelelő formátumban igényelni az adatot, kénytelenek leszünk mi átalakítani úgy, hogy a térinformatikai munkánkhoz használható legyen.

A másik, igen gyakori ok, hogy szeretnénk az eredetileg CAD környezetben létrejött és kezelt adatot webes térképes alkalmazásban publikálni. A térképszerverek általában közvetlenül nem támogatják a CAD-es formátumokat (pl. a vetület hiánya miatt), ami nem csoda, hiszen elsősorban térinformatikai adatok megjelenítésére és kezelésére lettek kitalálva. Ilyenkor azért kell az átalakítást elvégezni, hogy az adat végül megjelenhessen a webes térképes alkalmazásban pl. egy WMS vagy WFS szolgáltatáson keresztül.

Milyen problémákkal kell szembenéznünk?

A CAD és GIS eltérő szemléletéből fakadóan akad néhány olyan különbség, amelyekről tudnunk és amelyeket egy adott ponton kezelnünk kell, hogy az átalakítási folyamat eredménye valóban használható legyen:

  • Vetület hiánya: A hagyományos, térinformatikai kitekintéssel nem rendelkező CAD szoftverek (pl. "sima" AutoCAD, nanoCAD, stb.) nem kezelnek vetületeket.
    • A geometriák koordinátái tetszőleges, többnyire a tervező által meghatározott koordinátarendszerben értelmezendők. Ha ez a helyzet áll elő, a konvertált adat nem a megfelelő helyén fog megjelenni, s bár belső arányai helyesek, más adatokhoz képest rossz helyen és rossz méretben jelenhetnek meg. Ezért még térbeli illesztésre lehet szükség, amely azonban az adat pontosságára rányomja a bélyegét.
    • Egy fokkal jobb eset, ha a CAD állomány koordinátái egy vetületi rendszer (pl. EOV) szerint kerültek kijelölésre, tehát a mérnöki rajz töréspontjai koordinátahelyesek. Ha tudjuk, melyik vetület koordinátáit használja a rajz, a konvertálás után ezt csak be kell állítanunk és egy teljesen használható téradatot kapunk. Ilyenkor azzal a jelenséggel találkozhatunk, hogy a mérnöki rajz és a konvertált téradat egy kicsit másképpen néz ki. Ennek az oka, hogy az utóbbi esetében fellép(het) a vetület torzító hatása.
  • Rétegek eltérő szerepe: Mind a CAD, mind a GIS rétegeken csoportosítva kezeli a geometriákat, a két réteg fogalom azonban több ponton is eltér. Az adatok átalakítása szempontjából két fontos különbséget emelek most ki:
    • Míg a térinformatikában a rétegek sorrendje egyben a geometriák rajzolási sorrendjét is meghatározza, a műszaki rajzokon ez általában nem így van, ott a geometriák létrehozása ideje szerint rajzolódnak ki az elemek, függetlenül attól, hogy melyik rétegen találhatók, ezt a sorrendben azonban előre- vagy hátramozgatással meg lehet változtatni, míg a térinformatikai adatokból készített rétegek esetében ilyenre nincs mód. Ez a konvertálást annyiban befolyásolhatja, hogy ha nem minden adatot akarunk átalakítani, csak egy vagy néhány réteg adatait, ezek kiválasztása során figyelnünk kell arra, hogy nem biztos, hogy minden, az adott réteghez tartozó geometria látszik, lehet, hogy azt másik réteg geometriái részben vagy egészben elfedik!
    • A térinformatikai réteg általában (bár ott sem mindig) meghatározza azt is, milyen típusú geometriák (pont, vonal, poligon) kerülhetnek a rétegre és ezután csak az adott típusú geometriák kerülhetnek bele. A műszaki rajzok esetében azonban egy rétegen belül bátran keveredhetnek pontok, vonalak és ha a CAD szoftver esetleg kezel valamilyen poligonhoz hasonló geometriát, akkor azok is.
  • Nincs poligon: A CAD világában nagyon sokáig csak pontok, vonalak és vonalláncok szerepeltek, az utóbbi évtizedben kezdtek megjelenni valódi poligon tulajdonságokkal rendelkező objektumok. A CAD zárt vonalláncai (polyline) azonban nagyon könnyen poligonná alakíthatók, sőt, egy kevés utómunkával a sima vonalakból (line) álló zárt alakzatok is poligonná alakíthatók térinformatikai környezetben - amennyiben topológiailag helyes a rajz, azaz valóban zárt alakzatot alkotnak.

A Hatch (kitöltés) objektum már régóta létezik pl. az AutoCAD-ben, ez azonban több okból sem tekinthető a térinformatikai értelemben vett poligonnal azonosnak és a legtöbb konverziós eljárás sem alakítja át poligonná.

A következőkben bemutatott mintaadat a FreeTR Project-ben elérhető dat_minta.ftr állomány DXF, majd DWG formátumba való exportálásából származik.

A konvertálás menete

Először is meg kell nyitnunk a DWG fájlt egy olyan programmal, amely lehetővé teszi a DXF (Drawing eXchange Format) formátumba való mentést. Lehet ez AutoCAD, online Autodesk Viewer, DWG TrueView, QCAD vagy bármilyen más program. CAD állományok kezeléséhez legtöbbször a nanoCAD 5.0, szabadon és ingyenesen használható szoftvert használom.

nanoCAD 5.0

A kurzorral rákattintok egy elemre, amelyet szeretnék térinformatikai állományként kezelni majd, a példa kedvéért ezek legyenek a lakóépületek. A kattintás után egyrészt látom, hogy az épület vonalakból áll, nem vonalláncból, másrészt az Inspector panelen megjelennek az információi, köztük az is, hogy a rétegek közül a CA01 Lakóépület nevű rétegen található.

nanoCAD - Geometria kiválasztása

Ahhoz, hogy csak a nekünk kellő rétegen lévő geometriákat ki tudjuk választani, kattintsunk az Inspector panel ikonsorában lévő Quick selection ikonra. A megjelenő ablakban először válasszuk ki az All objects-re kattintva megjelenő legördülő menüből a Line objektum típust. Majd a Layer melletti Value mezőbe kattintva válasszuk ki a CA01 Lakóépület értéketés nyomjuk meg az OK-t.

nanoCAD - Geometriák szűrése

A nanoCAD ablak bal alsó sarkában látható koordináták azt sugallják, hogy a DWG geometriái EOV koordinátákkal készültek, így ezzel szerencsénk van. A kiválasztott vonalakat most vágólapra másoljuk (Ctrl+C), nyitunk egy új fájlt (File, New Document), aminek a rajzfelületén jobb egérgombbal kattintunk és a Paste to Original Coordinates menüpontot választjuk. Így kapunk egy olyan rajzot, amelyben csak a nekünk kellő geometriák vannak, továbbra is koordinátahelyesen (bár vetület nélkül).

nanoCAD - Kiválasztott geometriák beillesztése eredeti helyükre

A vonalakat valószínűleg nem fogjuk látni, mivel az origó környékét látjuk, azok pedig a saját koordinátáik szerint jelennek meg. De ha kiadjuk a Zoom parancsot a parancssorba és kiválasztjuk az Extent opcióját, akkor a nézet már a geometriákat fogja mutatni.

Ezt az állományt mentsük el (File, Save as...) DXF formátumban. A nanoCAD-ben befejeztük a munkát, bezárhatjuk, majd nyissuk meg a QGIS-t!

Egy üres projektben válasszuk ki a Layer menü, Add Layer menüpont, Add Vector Layer almenüpontot. Az adat forrás típusa (Source Type) legyen File és tallózzuk ki az imént mentett fájlt és adjuk hozzá a projekthez. Beállítástól függően a QGIS már ekkor rákérdezhet, hogy milyen vetületben szeretnénk értelmezni az adatot, mivel nem talált vetületi információt. A Filter sorba írjuk be, hogy 23700 és válasszuk ki a HD72 / EOV vetületi rendszert.

QGIS - Vetületi rendszer választása egy nyers, vetületi információ nélküli vektoros állomány megnyitásakor

Ha ekkor még nem kérdezett rá, de a réteg megjelent a Layers panelen és a térképfelületen, kattintsunk jobb egérgombbal a réteg nevére és válasszuk a Properties menüpontot, majd a Layer Properties ablak Source fülén válasszuk ki az Assigned Coordinate Reference System (CRS) legördülő menüből az EOV vetületet - ha szerepel már a legördülőben. Ha még nem, a legördülő menü utáni ikonra kattintva a korábban mutatott vetületválasztó felületet hozhatjuk elő és rákereshetünk az EPSG kód alapján.

QGIS - Vetületi rendszer választása egy már megnyitott, vetületi rendszer nélküli réteghez

Ha szükséged van egy kis áttekintésre a vetületekről, olvasd el a gyakran használt vetületekről írt cikkünket!

A réteg nevére jobb egérgombbal kattintva az Export, majd a Save Feature As... opciót válasszuk. A Save Vector Layer as... ablakban a Format legördülőben állítsuk be az ESRI Shapefile típust, alatta tallózzuk ki, hova mentse. A CRS-nél ellenőrizzük, hogy EOV vetületbe készíti-e el, a többi beállítást pedig egyelőre hagyhatjuk alapértelmezetten. Az OK gomb megnyomása után létrejön egy EOV vetületű SHP fájl, amely egyelőre vonalakat tartalmaz.

QGIS - DXF exportálása SHP formátumba

Ha szeretnénk az épületeket poligonokként kezelni, a hívjuk elő a Processing Toolbox-ot a Processing menü, Toolbox menüpontjára kattintva és ennek a kereső mezőjébe írjuk be, hogy "polygon" (idézőjelek nélkül), majd keressük meg a Vector geometry csoporton belül a Poligonize toolt.

QGIS - Vonalas állomány átalakítása polygonná

A tool számára adjuk meg Input layer-ként az imént exportált vonalas réteget, a Polygons mező mellett ikonra kattintva pedig válasszuk ki, hogy az eredményt fájlként mentsük (Save to File...) és tallózzuk ki hova és milyen névvel jöjjön létre. A Run gomb megnyomása után létrejön egy EOV vetületű SHP fájl, amely már poligonokat tartalmaz vonalak helyett.

QGIS - Poligonokká alakított DWG vonalak

A nanoCAD-ben végzett előszűrést akár ki is lehet hagyni és egyből az összes geometriát tartalmazó DXF is megnyitható a QGIS-ben. Ebben az esetben a vonalas réteg tartalmazni fogja az összes CAD vonalat, függetlenül attól, hogy melyik CAD rétegen volt, viszont a Layer attribútum alapján le lehet szűrni és külön lehet válogatni.

A QGIS vektoros fájl tallózásakor felajánlja a DWG formátum megnyitását is, de ez egyelőre nekem nem sikerült; a DXF csereformátum azonban jól működött minden esetben.

A konvertálási folyamat kezdő-, köztes és elkészült állományait megtalálod GitHub oldalunkon!

Ha adatbázis-építés, adatelemzés, vizualizáció, térinformatika témában segítségre van szükséged, írj nekünk az Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát. címre és megpróbálunk egy tippel, ötlettel segíteni!

Címkék: , ,

Deprecated: htmlspecialchars(): Passing null to parameter #1 ($string) of type string is deprecated in /home/adatpcom/public_html/templates/shaper_helix3/html/modules.php on line 21