Howto:Using osm2city.py on Windows

From FlightGear wiki
Revision as of 19:07, 22 May 2019 by RenanMsV (talk | contribs) (Fix Quick_Install_(Windows) url)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This is a guide for Windows use of osm2city:

Preparation

Database

First, I downloaded Enterprise DB's version of PostgreSQL from: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads I tested version 9.6 for Windows 64.

I will use the 'super-user' "postgres" and port 5432.

After installation, I launched the Stack Builder app included and I then installed PostGIS 2.5 under Spatial Extensions: TlvSqd4.png

After installation was finished, I then got PGAdmin 4 from https://www.pgadmin.org/download/ - this helps for managing databases (although I use commandline for most operations).

Python

Next, using Python 3.7 I installed these:

  • descartes
  • matplotlib
  • networkx
  • numpy (on Windows you need Numpy+MKL)
  • pil (Pillow)
  • pyproj
  • requests
  • scipy
  • shapely
  • psycopg2-binary

My pip freeze output: C:\Users\redpa> pip freeze

  • certifi==2018.11.29
  • chardet==3.0.4
  • cycler==0.10.0
  • Cython==0.28.5
  • decorator==4.3.0
  • descartes==1.1.0
  • ez-setup==0.9
  • idna==2.8
  • kiwisolver==1.0.1
  • matplotlib==3.0.1
  • networkx==2.2
  • numpy==1.14.6+mkl
  • Pillow==5.3.0
  • psycopg2==2.7.6
  • psycopg2-binary==2.7.6
  • pyparsing==2.3.0
  • pyproj==1.9.5.1
  • PyQt5==5.10.1
  • pyshp==1.2.12
  • python-dateutil==2.7.5
  • requests==2.21.0
  • scipy==1.1.0
  • Shapely==1.6.4.post1
  • sip==4.19.8
  • six==1.11.0
  • urllib3==1.24.1

Though, maybe not all of these are needed, some may be for other things; regardless that is all the modules installed on my system. Some packages did not work properly with pip; I got those from http://www.lfd.uci.edu/~gohlke/pythonlibs/, installing using the "wheel" file

Environment Variables

Then, in Environment Variables (search for Edit System Environment Variables on Windows 10 and hit on the bottom right "Environment Variables") I made sure PostgreSQL was in my PATH, which it was:

DUYP3c1.png

Then added FG_ROOT manually:

OOnYuie.png


Installing OSM2City tools

Next, I installed osm2city and osm2city-data from https://gitlab.com/fg-radi/osm2city-data and https://gitlab.com/fg-radi/osm2city. Both were installed in a new folder Documents/FlightGear/osm2city-work.

Under that folder I also created a "projects" folder.

Next, I installed osmosis from [1] and installed in osm2city-work.


Creating and Loading Database

Then, opening a CMD window, I created a database: this time I will make OSM scenery for Jan Mayen (a convenient tiny area).

createdb --encoding=UTF8 --owner=postgres --username=postgres janmayen

psql --username=postgres --dbname=janmayen -c "CREATE EXTENSION postgis;"

psql --username=postgres --dbname=janmayen -c "CREATE EXTENSION hstore;"

psql --username=postgres -d janmayen -f "C:\Users\redpa\Documents\FlightGear\osm2city-work\osmosis\script\pgsnapshot_schema_0.6.sql"

psql --username=postgres -d janmayen -f"C:\Users\redpa\Documents\FlightGear\osm2city-work\osmosis\script\pgsnapshot_schema_0.6_bbox.sql"


Then, downloading data from http://download.geofabrik.de/, navigating to Europe -> Norway and downloading the .pbf file: norway-latest.osm.pbf

I cropped it with osmosis as such:

cd Documents/FlightGear/osm2city-work/osmosis/bin/

osmosis --read-pbf file="C:/Users/redpa/Downloads/norway-latest.osm.pbf" --bounding-box completeWays=yes top=71.3 left=-9.5 bottom=70.7 right=-7.5 --write-pbf file="C:/Users/redpa/Downloads/norway-cropped.pbf"

Note that this can take up to ten - fifteen minutes. I used TerraGUI to get the coordinates, but any method will work.

And finally loaded it to the database:

osmosis --read-pbf file="C:/Users/redpa/Downloads/norway-cropped.pbf" --log-progress --write-pgsql database=janmayen host=localhost:5432 user=postgres password=YOURPW

and indexed the database:

psql --username=postgres --dbname=janmayen -c "CREATE INDEX idx_nodes_tags ON nodes USING gist(tags);"

psql --username=postgres --dbname=janmayen -c "CREATE INDEX idx_ways_tags ON ways USING gist(tags);"

psql --username=postgres --dbname=janmayen -c "CREATE INDEX idx_relations_tags ON relations USING gist(tags);"


Running osm2city

Next I create the params.ini file. For my purposes it is this - modify it according to docs at https://osm2city.readthedocs.io/en/late ... eters.html

I ended up with: PREFIX = "JanMayen"

PATH_TO_SCENERY = "C:\\Users\\redpa\\Documents\\FlightGear\\TerraSync-b"

PATH_TO_OUTPUT = "C:\\Users\\redpa\\Documents\\FlightGear\\Custom Scenery\\JanMayen-OSM-fg-CustomScenery"

PATH_TO_OSM2CITY_DATA = "C:\\Users\\redpa\\Documents\\FlightGear\\osm2city-work\\osm2city-data"

NO_ELEV = False

FG_ELEV = "C:\\Users\\redpa\\Documents\\Programs\\FlightGear 2018.4.0\\bin\\fgelev.exe"

DB_HOST = "localhost"

DB_PORT = 5432

DB_NAME = "janmayen"

DB_USER = "postgres"

DB_USER_PASSWORD = ""

LOD_ALWAYS_ROUGH_ABOVE_LEVELS = 3

LOD_ALWAYS_DETAIL_BELOW_LEVELS = 1

LOD_PERCENTAGE_DETAIL = 0.6

BUILDING_NEVER_SKIP_LEVELS = 2

BUILDING_REDUCE_CHECK_TOUCH = True

BUILDING_SKEL_ROOFS_MIN_ANGLE = 15

BUILDING_MIN_AREA = 1

BUILDING_FORCE_EUROPEAN_INNER_CITY_STYLE = True

HIGHWAY_TYPE_MIN = 1

POINTS_ON_LINE_DISTANCE_MAX = 10

MIN_ABOVE_GROUND_LEVEL = 0.035

BRIDGE_MIN_LENGTH = 30

C2P_PROCESS_POWERLINES_MINOR = True

C2P_PROCESS_OVERHEAD_LINES = True

C2P_PROCESS_AERIALWAYS = True

C2P_PROCESS_STREETLAMPS = False

OVERLAP_CHECK_CONSIDER_SHARED = True

This goes in projects/JanMayen/params.ini Also, create the folder where you want osm2city to generate files - in my case: Documents/FlightGear/Custom Scenery/JanMayen-OSM-fg-CustomScenery

Then, finally, cd ../../projects

C:\Users\redpa\Documents\FlightGear\osm2city-work\osm2city\build_tiles.py -f JanMayen/params.ini -b *-9.5_70.7_-7.5_71.38 -p 1

Result

HYyyNb1.png