wiki:UserGuidelines/GIS/Data

Version 51 (modified by Fran Boon, 11 years ago) ( diff )

Pakistan example of using the new s3gis.import_csv() function

User Guidelines for GIS Data

Assumes installation of the relevant tools: InstallationGuidelinesGISData

Import Data

Geonames

  1. Unzip the downloaded country file (a TAB-separated list) from http://download.geonames.org/export/dump/
    • e.g. PK.txt
  2. Transform each line in this file into XML by regular expression:
    ^(\d*)\t([^\t]*)\t([^\t]*)\t([^\t]*)\t([0-9\.]*)\t([0-9\.]*)\t[^\t]*\t([A-Z]*).*
    
    into:
    
    <location>
           <id>$1</id>
           <name>$2</name>
           <asciiName>$3</asciiName>
           <localNames>$4</localNames>
           <lat>$5</lat>
           <lon>$6</lon>
           <featureClass>$7</featureClass>
    </location>
    
    

This can be done using an RE-capable editor (e.g. Kate), Perl or even Python. Note: Need to replace & with &amp; and to remove any invalid characters

  1. Transform into S3XRC-XML using XSLT, stylesheet is available at

To Do:

  • ADM1->ADM4, PPLx to Levels L1->L4 (done)
  • Link to L1 -> L0
  • Use hierarchy.txt to link L2->L1
    • unfortunately no data for L3/L4 :/
  • Remove L2->L4 for unaffected areas

OpenStreetMap

We have a stylesheet to import .osm files, but this needs work to understand the admin hierarchy properly.

Shapefiles

Inspect the data using qGIS.

Use ogr2ogr to convert the data:

ogr2ogr -f CSV CSV TM_WORLD_BORDERS-0.3.shp -lco GEOMETRY=AS_WKT
ogr2ogr -f geojson TM_WORLD_BORDERS-0.3.json TM_WORLD_BORDERS-0.3.shp

If needing to reproject (e.g. for the Haiti Departements):

ogr2ogr -f CSV haiti_departments Haiti_departementes_edited_01132010.shp -s_srs EPSG:32618 -t_srs EPSG:4326 -lco GEOMETRY=AS_WKT

NB AS_WKT requires OGR v1.6+

There is a function available in modules/s3gis.py to import from CSV.

Example for Pakistan:

db.gis_location.truncate()
# L0
import csv
csv.field_size_limit(2**20 * 10)  # 10 megs
db.import_from_csv_file(open('L0.csv','rb'))
db.commit()
# L1
gis.import_csv('pak_adm1.csv')
db.commit()
# L2
db(db.gis_location.name=="Baluchistan").update(name="Balochistan")
db(db.gis_location.name=="Northern Areas").update(name="Gilgit Baltistan")
db(db.gis_location.name=="N.W.F.P.").update(name="Khyber Pakhtunkhwa")
db(db.gis_location.name=="F.A.T.A.").update(name="FATA")
db(db.gis_location.name=="F.C.T.").update(name="Islamabad")
db(db.gis_location.name=="Azad Kashmir").update(name="AJK")
gis.import_csv('pak_adm2.csv')
db(db.gis_location.name=="Sind").update(name="Sindh")
db(db.gis_location.name=="AJK").update(name="Pakistan Administered Kashmir")
db(db.gis_location.name=="Islamabad").update(name="Federal Capital Territory")
db(db.gis_location.name=="FATA").update(name="Federally Administered Tribal Areas")
db.commit()
# L2
db(db.gis_location.name=="Islamabad Capital Territory").update(name="Islamabad")
db(db.gis_location.name=="Jaccobabad").update(name="Jacobabad")
db(db.gis_location.name=="Tando Allahyar").update(name="Tando Allah Yar")
db(db.gis_location.name=="Qambar Shahdad kot").update(name="Qambar Shahdadkot")
gis.import_csv('pak_adm3.csv')
db(db.gis_location.name=="Islamabad").update(name="Islamabad Capital Territory")
db(db.gis_location.name=="Tando Allah Yar").update(name="Tando Allahyar")
db(db.gis_location.name=="Qambar Shahdadkot").update(name="Qambar Shahdad Kot")
db.commit()

WFS

It is possible to use the WFS Plugin to get data into qGIS & thence export into other formats.

May need to use a Custom CRS (in Settings menu - remember to Save!) such as:

Can then go to the Layer Properties & Specify CRS to this User Defined Coordinate System.

Can then Save As and change the CRS to something like the standard WGS84.

Display Data

GeoServer

GeoServer can provide geospatial data in Raster (WMS) or Vector (WFS/KML) formats.

Once you have installed (Linux, Windows), then login:

  • l: admin
  • p: geoserver

Configure:

Import Shapefiles

e.g. Country Outlines:

These can be loaded direct into GeoServer, however there will be better performance by importing into PostGIS:
(can also use pgAdmin III GUI's Shapefile loader on plugins menu)

su postgres
shp2pgsql -s 4326 -I TM_WORLD_BORDERS-0.3.shp public.countries | psql -d gis

To reproject the data into 900913 for a slight performance advantage:

drop constraint srid;
update table set geomcolumn=transform(geomcolumn,900913);

Configure GeoServer

Add WMS Layer to Sahana Eden

  • tbc

Grid

tbc: BluePrintGISGrid

Topographic Maps

Old Printed Maps

Old Printed Maps can be 'Rectified' to be overlaid on the base maps:

PostgreSQL management

  • Connect to Database (or use pgAdmin III GUI's PSQL Console on plugins menu)
    su postgres
    psql
    

or

psql -d my_spatial_db -U username
  • List Databases
    \l
    
  • List Tables
    \d
    
  • List Table structure
    \d tablename
    select field/* from tablename where field = 'value';
    

PostGIS functions

  • Centroids
    SELECT name, iso2, asText(ST_Transform(ST_Centroid(the_geom), 4326)) AS centroid FROM countries;
    

Data Sources

OGC (WMS/WFS)


GIS

Attachments (12)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.