Vairāk

Pārvērst mapinfo stilus par qgis stiliem

Pārvērst mapinfo stilus par qgis stiliem


Līdz šim esmu strādājis ar mapinfo. Man ir liels vektoru slānis (punkti) ar sarežģītu simboloģiju.

Vairākas dienas es atteicos no mainfo par qgis. Vai ir kāds veids, kā pārvērst savus mapinfo failus (.tab) faila formātā, ko atbalsta qgis. protams, es vēlētos saglabāt simboloģiju (stilu) failu konvertēšanas laikā.


Es gribētu pārvērst lielu punktu slāni no .Tab uz .SHP un saglabāt stilu Qgis. Mana slāņa simboloģija ir diezgan sarežģīta (krāsu, formas, simbolu mainīgie). Es strādāju ar Windows 7 32 bitiem. Ir instalētas Mapinfo 12.0 un qgis 2.6.

Es lejupielādēju spraudni no šīs krātuves:

https://github.com/NathanW2/MapInfo-to-QGIS-style-generator

Es atvēru uzvednes komandu OsGeo4W apvalks, kas pieejams ar manu qgis 2.6.

Es mēģināju izpildīt spraudni. Es saņēmu kļūdas ziņojumu. Šķiet, ka šis ziņojums attiecas uz fied, kas ir jāiesniedz (ar -c argumentu), bet es nesaprotu.

Kura kolonna jāpiegādā?

Pašreizējā manas komandas struktūra ir šāda: python mapinfoToQgis.py pathINPUT.Tab pathOUTPUT.qml --UseMapInfo

Ielīmēju divus ekrānuzņēmumus:

A. koncentrēties uz manu .Tab mapinfo POINT slāni ar sarežģītu simboloģiju

B. kļūdas ziņojums, izmantojot uzvednes komandu

Vai jūs varētu man parādīt gaismu?


Ja elementu stils ir tematisks (un jūs zināt, kuras kolonnas virza tēmu), varat programmatiski izveidot QML failu PostgreSQL.

Piemēram, man ir fails ar ~ 150 stiliem valdības zonu daudzstūriem (zonu apakškopām ir vienāds stils). Dati sākotnēji bija MapInfo formātā divos TAB failos - viens ar zonas daudzstūriem, otrs ar telpiskiem datiem, piemēram zone_code, apraksts, grupa, un visbeidzot “sarkans”, “zaļš” zils (pēdējie 3 ir ieteicamās krāsu rampas RGB vērtības).

Lai izveidotu savu QML failu, es rīkojos šādi:

(1) importēt datus PostgreSQL (izmantojot ogr2ogr);
(2) uzrakstiet pitona skriptu, kas izskatās šādi -

importēt psycopg2 # Iestatīt savienojumu ar datu bāzi conn_string = "host = 'localhost' dbname =" [db] "user =" [me] "password =" [not tell] "" # Savienojuma izveide ar datu bāzi conn = psycopg2.connect (conn_string ) # iestatīt noklusējuma kursoru (lai palaistu vaicājumus) cursor = conn.cursor () # Iegūt informāciju par LGA; saglabājiet tos sarakstā cursor.execute ('atlasiet xmlelement (nosaukums qgis, xmlattributes (' 2.8.2-Wien  'kā versija)), xmlelement (nosaukums "renderer-v2", xmlattributes (' zone_code  'kā attr, 0 kā simbola līmeņi,  'kategorizēts simbols ' kā veids), xmlelement (vārda simboli, xmlagg (xmlelement (vārda simbols, xmlattributes (1 kā alfa,  'fill ' kā tips, gid-1 kā nosaukums), xmlelement (nosaukuma slānis)) , xmlattributes (0 kā pass,  'SimpleFill ' kā klase, 0 kā bloķēta), xmlelement (nosaukums prop, xmlattributes ( 'color ' kā k, rgba kā v)), xmlelement (name prop, xmlattributes ( ') outline_color  'as ​​k, ' 230,230,230,255  'as ​​v))))))), xmlelement (nosaukumu kategorijas, xmlagg (xmlelement (nosaukuma kategorija, xmlattributes (' true  'kā renderēt, gid-1 kā simbols, zone_code kā) vērtība, zonas_kods ||  '(' || apraksts ||  ') ' kā etiķete)))))) no se_zones ') xml_new = "kursora rindai: drukāt rindu [0] xml_new = rinda [0 ] #print 'XML_New:', xml_new # testēšana tikai # pirms gaidīšanas QGIS specifiska DOCYTPE uz XML outStr = " n " + xml_new # atvērt galamērķa XML failu un saglabāt tajā XML outFile = open (" Zones.qml ", 'w') outFile.write (outStr)

Skripts ir kludgy (nav nepieciešamsrindai kursorākopškursorsatgriež tikai vienu rindu), bet rezultāts ir tieši tas, ko es gribēju: QML fails, ko es varētu izplatīt saviem kolēģiem, lai viņi ar 3 klikšķiem varētu noformēt zonētos datus. (Bonusa ieguvums: ja motīvu faili ir jāveido dažādām kategoriju kopām, ir jāmaina tikai vaicājums: mums ir ~ 25 dažādas motīvu kopas, un tās visas tika veidotas no šī viena skripta, mainot vaicājumu un galamērķa failu) .

Rezultāts izskatās šādi -

          

Jūsu konkrētajai tēmai jums būs jāraksta atbilstošs vaicājums (tas nozīmē, ka jums jāzina slejas, kas “virza” stila kategorijas).

MapInfo stulbi glabā stila datus pēc kārtas (90. gadi, viņi vēlas, lai viņu “stils un saturs tiktu sajaukti”), taču to var iegūt, ja ogr2ogr importēšanas paziņojumam pievienojat -SQL paziņojumu, pievienojot izgūtajam OGR_STYLE komplekts. Pēc tam varat parsēt kolonnu “stils” PostgreSQL, lai iegūtu informāciju par stilu.

Šis ir skripts, ko izmantoju, lai importētu visus TAB failus noteiktā direktorijā (slīpsvītras ir tikai, lai parādītu, ka tā ir viena rinda, skaidrības labad sadalīta): attiecīgais papildu bits ir -SQL rinda.

%f in (*.tab) do ogr2ogr -nlt GEOMETRY  -lco GEOMETRY_NAME = g1  -lco SCHEMA = test  -lco FID = id1  -lco OVERWRITE = YES  -f "PostgreSQL"  --config OGR_TRUNCATE YES  -pārrakstīt  -a_srs EPSG: 4283  -SQL "select *, CAST (OGR_STYLE AS Character (255)) AS style from %~ nf"  PG: "host = localhost user = [me] dbname = [db] parole = [nestāsta] ""%~ nf.tab "

Ja paskatās importētos datus, jūs atradīsit kolonnu “stils” ar ierakstiem, kas izskatās

BRUSH (fc:#dae89c, bc:#ffffff, id: "mapinfo-brush-2, ogr-brush-0"); PEN (platums: 1px, c:#ffffff, id: "mapinfo-pen-2, ogr) -pildspalva-0 ")

Punktu datiem tas, protams, izskatīsies citādi - tam, iespējams, būs marķieru veidi un kas nav.

Visticamāk, kāds, kam ir labākas zināšanas par to, kā stila informācija tiek glabāta "Windows 8 of GIS" (MapInfo), varētu jums pateikt, kā iegūt konkrētu krāsu un simbolu informāciju tiešāk -SQL paziņojumā (I Man bija jēga to uzzināt, bet es cenšos pēc iespējas mazāk domāt par MapInfo: man šķiet, ka ir pietiekami viegli PostgreSQL sleju “stils” automātiski parsēt ar skriptu).


Skatīties video: .map to.shp in QGIS