Build your own MapQuest!

Download Report

Transcript Build your own MapQuest!

Build your own MapQuest!
Adding Spatial Smarts to
PostgreSQL with PostGIS
Paul Ramsey
Refractions Research
Paul Ramsey
http://mqmapgend.websys.aol.com:80/mqma
pgend?MQMapGenRequest=FDR2d
mwjDE%3byt29%26FDJnci4Jkqj%2c
MMCJ%3aHOEvq%3bwy5lab%3a%2
9uaxlw1w%26%40%24%3a%26%4
0%24s%26wzx%26a8x%26ESEKGF
%3dTPWIK%2crgqabx%26%3d2llar
wh%40%24%3a%26%40%24%3a
%26a2%3a
Paul Ramsey
On-the-Fly Cartography
GIS Data
Paul Ramsey
Cartography
Engine
Colorful
Picture
GIS Data
Don’t
Panic
• File Formats
• Data Organization
• Coordinate Projections
• Data Access
• Data Quality
Paul Ramsey
File Formats
• At least one per vendor
–
–
–
–
–
ESRI : Shape, Coverage, E00, GeoDatabase
CAD : DXF, DGN
Government : SDTS, TIGER, DLG
MapInfo : MIF/MID, TAB
Standards : GML
• Open source conversion
– OGR (gdal.maptools.org/ogr)
Paul Ramsey
Data Organization
• By Administrative Unit
– Counties, States
• By Gridding Unit
– USGS 24K Quads, NTS Mapsheets
• By Natural Unit
– Watersheds
Paul Ramsey
Coordinate Projections
-114.068,49.000
Geographic
Longitude / Latitude
Paul Ramsey
1859612,511175
Albers Equal Area
Origin -126,0
Parallels 58.5,50.0
Offsets 1000000,0
Coordinate Projections
• United States
– UTM (Universal Transverse Mercator)
– “Stateplane”
• Lambert
• Transverse Mercator
– Geographic
• Always Find Out the
Projection of Your Data
– .prj file
Paul Ramsey
Data Access
• United States
– Mostly Free Federal Data
•
•
•
•
•
•
www.geodata.gov
tiger.census.gov
QuickTime™ and a
TIFF
(Uncompressed)
decompressor
www.fgdc.gov
are needed to see this picture.
transtats.bts.gov
geonames.usgs.gov
www.fws.gov/data
– Some Free State Data
– Little Free County / Municipal Data
Paul Ramsey
Data Acce$$
• Commercial Providers
– NavTeq
QuickTime™ and a
–
TeleAtlas
( + decompressor
GDT )
TIFF (Uncompressed)
are needed to see this picture.
– MapInfo
– DigitalGlobe
– SpaceImaging
Quic kTime™ a nd a
TIFF (Un co mp res sed ) d eco mp re sso r
ar e n eed ed to see thi s p ictu re.
Quic kTime™ a nd a
TIFF (Un co mp res sed ) d eco mp re sso r
ar e n eed ed to see thi s p ictu re.
Paul Ramsey
QuickTime™ and a
TIFF (Uncompressed) decompressor
are needed to see this picture.
Data Quality
USGS DLG
Paul Ramsey
TIGER Census
Cartography Engine
Proprietary
ArcIMS
MapExtreme
Open Source
GeoServer
DeeGree
UMN Mapserver
Paul Ramsey
UMN Mapserver
• mapserver.gis.umn.edu
• Multiple Format Support
– Shape, TAB, Coverage, DGN, PostGIS,
More…
• Multiple Projection Support
• Standards Support
– OpenGIS Web Map Server
– OpenGIS Web Feature Server
– OpenGIS Styled Layer Descriptor
Paul Ramsey
UMN Mapserver
Format A
Projection 1
Format B
Projection 1
Format C
Projection 2
Mapserver
“Map File”
ourmap.map
Paul Ramsey
MAP
EXTENT 1192130 379840 1199560 385520
SIZE 400 400
SHAPEPATH "/Users/pramsey/Sites"
PROJECTION
"init=epsg:42102" # BC Albers
END
LAYER
NAME "Lakes"
STATUS ON
DATA "lakes"
TYPE POLYGON
PROJECTION
"init=epsg:42102" # Geographic
END
CLASS
NAME "Lakes"
COLOR 205 223 255
END
END
END
Paul Ramsey
UMN Mapserver & PostGIS
PostGIS /
PostgreSQL
Spatial
Database
Mapserver
“Map File”
ourmap.map
Paul Ramsey
This is your Database…
• “Is there a Main Street?”
• “How many patients does the prenatal
center serve?”
QuickTime™ and a
(Uncompressed) decompressor
• “How manyTIFFare
buildings
in the city have
needed to see this picture.
more than two stories?”
• “What is the total amount of cash
withdrawals for customer X?”
Paul Ramsey
This is your Database
on Spatial…
• “What is the total length of Main
Street?”
• “What is the total number of patients
QuickTime™ and a
within 3 miles
of
thedecompressor
prenatal center?”
TIFF (Uncompressed)
are needed to see this picture.
• “How many buildings of more than 2
stories are along the parade route?”
• “Have all the cash withdrawals for
customer X been within 50 miles of her
primary residence?”
Paul Ramsey
PostGIS / PostgreSQL
• Extension to PostgreSQL
– src/contrib/
• GEOMETRY
– Point, Line, Polygon, Multi*
– Functions
– Indexes
• http://postgis.refractions.net
Paul Ramsey
PostGIS Types
•
•
•
•
•
•
•
.
POINT
LINESTRING
POLYGON
..
MULTIPOINT
MULTILINESTRING
MULTIPOLYGON
GEOMETRYCOLLECTION
Paul Ramsey
PostGIS Types
id |
geometry
|
name
------+---------------------------+-------------1294 | POINT(1199437.8 382509.2) | Brighton Ave
1295 | POINT(1199369.3 382741.7) | York Pl
1296 | POINT(1199494.8 382751)
| Prospect Pl
Paul Ramsey
PostGIS Functions
• Single Geometry
–
–
–
–
–
–
–
–
Paul Ramsey
Float : Length(Geometry)
Float : Area(Geometry)
Integer : NumGeometries(Geometry)
Integer : NumPoints(Geometry)
Geometry : Buffer(Geometry,Float)
Point : PointN(Geometry)
Text : AsText(Geometry)
ByteA : AsBinary(Geometry)
PostGIS Functions
• Multiple Geometry
–
–
–
–
–
–
–
Paul Ramsey
Float : Distance(Geometry,Geometry)
Boolean : Touches(Geometry,Geometry)
Boolean : Intersects(Geometry,Geometry)
Boolean : Disjoint(Geometry,Geometry)
Geometry : Intersection(Geometry,Geometry)
Geometry : GeomUnion(Geometry,Geometry)
Geometry : Difference(Geometry,Geometry)
PostGIS Indexes
• Geometries Require Special Index
– Sortable in two dimensions
– Cover range of values
• R-Tree Index (GiST Implementation)
• Linear Time Picksplit Algorithm
• http://postgis.refractions.net/rtree.pdf
Paul Ramsey
Paul Ramsey
Paul Ramsey
QuickTime™ and a
TIFF (Uncompressed) decompressor
are needed to see this picture.
Paul Ramsey
Get on with it!!
Our Architecture
PostGIS /
PostgreSQL
Spatial
Database
Mapserver
Map File
GIS
Data
Paul Ramsey
ourmap.map
Our Steps
1. Install / Setup
•
•
2.
3.
4.
5.
6.
Paul Ramsey
Mapserver, PostGIS
GDAL, OGR, PROJ4, GD
Acquire GIS Data
Load GIS Data  PostGIS
Write Map File for Mapserver
…
Profit!
Acquire Data
• For demo, hunted down Oregon data:
1981636
564501
34729355
62246216
1853534
3293501
Paul Ramsey
Jul
Jul
Jan
Jul
Jul
Jul
28
28
9
28
28
28
12:02
11:55
2003
11:55
11:55
12:42
OR_deci.zip
county.zip
hydrogm020.tar.gz
gdt.zip
railroads.zip
s_12my03.zip
Load Data
• Load names data with perl script:
"OR","4H Camp","locale","Coos",41,011,"431355N",
"1235945W",43.23194,-123.99583,"","",,,216,,"","Dora"
INSERT INTO names
VALUES
(1,'OR','4H Camp','locale','Coos',
'SRID=4269;POINT(-123.99583 43.23194)',
216,NULL,'Dora’
);
Paul Ramsey
Load Shape Files
• PostGIS includes Shape loader utility:
shp2pgsql -s 200000 \
counties.shp counties |
psql demo-oregon
Paul Ramsey
Write Map File
• Good computer cartography is the artful
combination of elements, styles, colors
and data at appropriate scales.
• MapQuest is an example of excellent
cartography.
• So is a National Geographic Atlas of the
World.
Paul Ramsey
LAYER
TEMPLATE template.html
DUMP TRUE
NAME "States"
METADATA
"wms_title" "States"
END
STATUS ON
DATA "the_geom from states"
TYPE POLYGON
CONNECTIONTYPE POSTGIS
CONNECTION "user=pramsey dbname=demo-oregon"
PROJECTION
"init=epsg:4269"
END
CLASSITEM "admin_name"
CLASS
NAME "States"
COLOR 255 255 230
OUTLINECOLOR 20 20 20
EXPRESSION "Oregon"
END
CLASS
NAME "States"
COLOR 240 240 240
OUTLINECOLOR 20 20 20
END
END
Paul Ramsey
Paul Ramsey
Demonstration
• iBook G3 800Mhz 128MB
– PostGIS / PostgreSQL, Mapserver, Apache
•
•
•
•
•
Roads
States
Counties
Geographical Names
Water Features
Paul Ramsey