/srtm2postgis

Imports data from the NASA Shuttle Radar Topography Mission into a PostGIS database (and other databases in the futue).

Primary LanguagePython

Script that imports the SRTM data in a PostGIS (PostgreSQL) database.  

http://wiki.openstreetmap.org/index.php/Route_altitude_profiles_SRTM#SRTM_import

GDAL install:
https://www.gisinternals.com/release.php
Select release
    release-1930-x64-gdal-3-8-5-mapserver-8-0-1
Install
    gdal-3.8.5-1930-x64-core.msi
Extract
    release-1930-x64-gdal-3-8-5-mapserver-8-0-1-libs.zip
to %gdal_libs%
Rename
    %gdal_libs%\lib\gdal_i.lib to gdal.lib

Adding Path Variables:
PATH
;C:\Program Files\GDAL
GDAL_DATA=c:\Program Files\GDAL\gdal-data\
GDAL_DRIVER_PATH=c:\Program Files\GDAL\gdalplugins\

pip install wheel
pip install setuptools
pip install --global-option=build_ext --global-option="-I%gdal_libs%/include" --global-option="-l%gdal_libs%/lib" gdal[numpy]

Usage:
First run the tests that come with this script:

python test/test_download.py

Then download the SRTM source files (635 MB for Australia):

$ python download.py continent

(replace continent by Africa, Australia, Eurasia, Islands, 
North_America or South_America.

Second argument (optional) specifies from which tile to resume. 
Use full file name e.g. 'N36W004.hgt.zip'. Set to 0 start at the first file. 
Argument 3-6 optionally specify a bounding box: north, south, west, east.

Verify that the download went correctly:

python test/verify_download.py continent

Unzip the files (adds 3 GB):
$ for f in `ls *.zip`; do unzip $f; done

Create a PostGIS database (you may need to change some things here depending on 
your system):

$ createdb srtm
$ createlang plpgsql srtm
$ psql -d srtm -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
$ psql -d srtm -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql

Create a test database:

$ createdb srtm_test
$ createlang plpgsql srtm_test
$ psql -d srtm_test -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql
$ psql -d srtm_test -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sql

Run script that reads files and puts them in the database.
Test it first:

$ python test/test_read_data.py
$ python read_data.py continent

Verify the result

$ python read_data.py continent verify 

All altitude data should now be in the table 'altitude'. Enjoy.