Skip to content

Instantly share code, notes, and snippets.

@oskarlin
Last active October 30, 2017 14:32
Show Gist options
  • Save oskarlin/fc5c421f6e6d3c6a3091428097f98ea5 to your computer and use it in GitHub Desktop.
Save oskarlin/fc5c421f6e6d3c6a3091428097f98ea5 to your computer and use it in GitHub Desktop.
Skapar punktobjekt för tunnlars början och slut i Lantmäteriets produkter.
#!/bin/sh
# kan köras på både väg-, översikt- och terrängkartan.
for name in "jl" "vl"
do
# välj ut linjer som är tunnlar (gäller vl och jl)
ogr2ogr -sql "SELECT * FROM $name WHERE KKOD IN (5811, 5812, 5816, 5817, 5821, 5822, 5824, 5825, 5828, 5829, 5832, 5833, 5834, 5836, 5840, 5844, 5845, 5851, 5856, 5858, 5861, 5871, 5882, 5891, 291, 286, 292, 293, 294, 295, 296, 299, 5552, 5432, 5332, 5322, 5312, 5232, 5222, 5212, 5112, 5012, 5612, 5613, 5622, 5623, 5632, 5642, 5643)" ${name}_underfart.shp $name.shp
# lägg till kolumn för vinkel
ogrinfo ${name}_underfart.shp -sql "ALTER TABLE ${name}_underfart ADD COLUMN angle integer(3)"
# lägg till vinkeln mellan noderna i vinkel-kolumnen
ogrinfo ${name}_underfart.shp -dialect SQLite -sql "UPDATE ${name}_underfart SET angle = (atan((ST_X(ST_StartPoint(geometry))-ST_X(ST_EndPoint(geometry)))/(ST_Y(ST_StartPoint(geometry))-ST_Y(ST_EndPoint(geometry))))) * 180/3.14159 + (180 *(((ST_Y(ST_StartPoint(geometry))-ST_Y(ST_EndPoint(geometry))) < 0) + (((ST_X(ST_StartPoint(geometry))-ST_X(ST_EndPoint(geometry))) < 0 AND (ST_Y(ST_StartPoint(geometry)) - ST_Y(ST_EndPoint(geometry))) >0)*2)))"
# skapa ett punktlager för början och slutet.
ogr2ogr -f "ESRI Shapefile" -dialect sqlite ${name}_underfart_end.shp -sql "select ST_EndPoint(geometry), KKOD, angle from ${name}_underfart" ${name}_underfart.shp
ogr2ogr -f "ESRI Shapefile" -dialect sqlite ${name}_underfart_start.shp -sql "select ST_StartPoint(geometry), KKOD, angle from ${name}_underfart" ${name}_underfart.shp
ogrinfo ${name}_underfart_end.shp -dialect SQLite -sql "UPDATE ${name}_underfart_end SET angle = (angle + 180)"
# slå ihop
ogr2ogr ${name}_underfart_point.shp ${name}_underfart_start.shp
ogr2ogr -update -append ${name}_underfart_point.shp ${name}_underfart_end.shp
# rensa onödiga filer
rm ${name}_underfart_end.*
rm ${name}_underfart_start.*
rm ${name}_underfart.*
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment