Detta inlägg är ett försök att upprepa gårdagens resultat, fast med ESRI ArcMap. När jag börjar skriva detta så har jag bara precis startat ArcMap och kommer att skriva lite parallellt, så vi får se mot slutet om det fungerar.
Det kommer att bli en del utmaningar, inte minst då ArcMap saknar datadefinierade åsidosättningar, men jag tror jag har några idéer om hur jag kan göra istället.
- Höjdraster till höjdkurvor
- Höjdkurvor till linjesegment
- Linjesegmentriktning
- Symbolsättning
Då kör vi…
1. Raster till linjer
För det första så behöver jag skapa ett homogent rasterlager för att få ett enhetligt utseende på mina höjddataraster. I QGIS används virtuella rasterkataloger.
I ArcMap kan man skapa en rasterkatalog som är ”Unmanaged”, vilket innebär att den inte innehåller data i sig utan bara hänvisningar till de filer eller data som ingår i katalogen.
För att få ett homogent utseende så krävs det dock lite mer arbete, men ni som jobbar med ArcMap skall nog inte ha några problem med det.
Då uppstår problem nummer ett. Verktyget Contour (kräver spatial analyst licens) verkar inte gå att köra på en rasterkatalog. Mitt område ligger i skarven mellan fyra rasterfiler så då måste jag skapa en rastermosaik i stället för en katalog, vilket innebär mer datorarbete men det medför lite andra fördelar så det får väl passera.
2. Höjdkurvor till segment
Det finns ett verktyg i toolboxen som heter ”Split line at vertices” som gör precis det som jag behöver.
Inte mycket mer att säga om detta.
3. Linjesegmentriktning
För att lösa detta så blir det Pythonskript.
180 + math.atan2(( !Shape.firstpoint.X! – !Shape.lastpoint.X! ),
(!Shape.firstpoint.Y! – !Shape.lastpoint.Y! ) ) * (180 / math.pi)
Jag har inte analyserat detta skript jag hittat på Internet i detalj och det kan säkert finnas bättre vägar att gå. I princip så är det en trigonometrisk funtion som helt enkelt räknar fram vinkeln från startpunkten till slutpunkten.
Jag kör ”Field calculator” på ett skapat fält, vilket tar oändligt lång tid.
Jag tror att man kan köra skriptet via en python process i en toolbox och då möjligen köra skriptet i bakgrunden, vilket gör att jag åtminstone kan fortsätta jobba med något och inte drabbas av ett helt låst ArcMap. Jag har dock inte listat ut hur detta går till.
Jag sätter på kaffe…
Efter två koppar kaffe, och en promenad så har beräkningen nått runt 5%! Jag avbryter. Varför går beräkningarna så vansinnigt mycket snabbare i QGIS? Jag begränsar beräkningsområdet så mycket jag kan för att ändå få ett resultat, startar processen och går och lagar mat…
Jag hade kunnat bygga in nästa steg i processen också, men nu gör jag det separat. Det behövs ett nytt attribut som beskriver avvikelsen från ”solsidan”.
I samma process så sätter jag ”belysningsriktningen” till 45°. Alla värden ovan hänger ihop med dessa båda processer.
4. Symbolsättning
Här är det egentligen inte så svårt.
Det är bara att använda en graderad färgskala och välja en färgramp som passar. För någon som är van vid ArcMap så är detta inte så konstigt.
Jag tycker dock att utritningen på skärmen tar väldigt lång tid och jämfört med QGIS så är jag väldigt begränsad i hur jag kan justera utseendet på linjerna. QGIS är dock betydligt mycket bättre på ”stil” än vad ArcMap är, som är mer ”ingenjörsmässigt”.
Bilden ovan är rejält inzoomad eftersom jag helt enkelt inte fick fram fler höjdkurvor inom en acceptabel tid. Resultatet är dock rent tekniskt det samma som från gårdagen.
Sammanfattning
Det finns skillnader i arbetssätt och en del saker tar lite extra tid i ArcMap, men jag försöker kopiera en metod från QGIS så om man börjat från grunden i ArcMap så kanske det sett lite annorlunda ut.
Det som jag inte kan förlika mig med är att det skall ta så lååååång tid att göra några enkla geometriska beräkningar…
Jag gjorde om beräkningarna i en modell med ”Calculate Field” verktyg där jag gjorde allt jag kunde för att hitta ett sätt att snabba upp beräkningarna. Det slutade ändå med att jag fick avbryta efter en timme, då processen nått 1 %!!!
Jag hoppas att jag gjort något fundamentalt fel i beräkningarna för det här är ett stort fail för ArcMap.
Om man bortser från detta så går det att skapa Tanaka linjer även i ArcMap så nu finns det ingen anledning att inte prova, om du inte använder MapInfo… Men det tänker inte jag ge mig på!
Testa den här verktygslådan: http://blogs.esri.com/esri/arcgis/2015/05/21/take-your-terrain-mapping-to-new-heights/
Jag har själv inte haft möjlighet att testa, men det är kanske en väg framåt! ArcGIS Pro borde också ge bättre prestanda.
Nu har jag provat ”Terrain Mapping” toolboxen som Oscar tipsat om, och verktyget ”belysta konturer”. Verktyget är mycket snabbare än processen i artikeln (exponentiellt snabbare), men… Det blir inte snyggt! Dessutom så är det en väldigt grov approximering av riktningarna på höjdkurvorna och utan att ha gått igenom koden i detalj så kan jag konstatera att jämfört med det jag beskriver ovan så har man genat i kurvorna väldigt mycket. Det verkar som att man använder värdet från en ”hillshade” för att extrahera och attributsätta kurvsegment från den beräknade höjdkurvan. Detta ger en skuggeffekt på linjerna, men inte alls samma intensitet som med min beskrivning ovan.
Jag följer upp min egen artikel med att jag nu provat Tanakalinjer över HELA Småland med QGIS. Det tog lite tid (ca ett dygn) att klippa upp 10 meters linjerna i segment och shapefilen blev runt 550 Mb stor, men själva beräkningen av azimuth, som med ArcGIS i princip var omöjlig att köra ens över ett mycket begränsat område, tog i QGIS runt 90 sekunder. 90 SEKUNDER!!!