Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Wide Open Spaces Using My Sql As A Web Mapping Service Backend
1. Wide Open Spaces:
MySQL as a Web
Mapping Service
Backend
Don Beesing
Alion Science and Technology
USJFCOM Experimentation
Modeling and Simulation
April 22, 2009
2. Overview
Going to show MySQL in one aspect of GIS World
Security Restrictions
Feel free to ask questions
3. Problem
Experiment based environment
How to share geospatial information
Many different government organizations
Disparate systems on each site
Fallback systems to use
4. Solution
WMS (Web Mapping Service)
OpenGIS Standard
Http request returns images
Can be a queryable service
5. Constraints
Typical commercial setup
Timing & dollar issues
Unofficial open source policy
Our idea
MySQL & MapServer
6. Diagram of Implementation
Users without Users with access to
access to WMS WMS Publishing
Publishing
Point and click GUI
COP
COP/WMS Server
WMS Feed
WMS Feed
HTTPDServer
HTTP Feed
MapServer CGI
MySQL Server
7. MySQL
Already a key component of lab
•
Proof of concept
•
Stubbornness of lab manager
•
8. MySQL Implementation
• Schema setup – geometry type
• Parent/child tables for updates
• Roads not taken
– Shapefile import
9. MapServer
Open source
•
Standards compliant
•
OGR connector to link w/MySQL
•
Standards version issues
•
Reliance on linked WFS
•
10. MapServer Format Example
Meta Data Header
WEB
METADATA
quot;wms_titlequot; quot;J9 Noble Resolve WMS Serverquot;
quot;wms_onlineresourcequot; quot;https://yoursite.com/mapserv?map=nr.map"
quot;wms_srsquot; quot;EPSG:4269 EPSG:4326quot;
quot;wfs_titlequot; quot;J9 Noble Resolve WFS Serverquot;
quot;wfs_onlineresourcequot; quot;https://yoursite.com/mapserv?map=nr.map"
quot;wfs_srsquot; quot;EPSG:4326quot;
END
END
11. Format Example
Layer Info
LAYER
CONNECTIONTYPE OGR
CONNECTION
quot;MYSQL:noble_resolve_08,user=test,password=test,host=127.0.0.1,port=3306quot;
DATA quot;SELECT geom,id,max(update_id) as `update_ref`,object_title,IF(u.description IS NULL,
g.description, u.description) as `description`, IF(u.attachments IS NULL,
SUBSTRING_INDEX(SUBSTRING(g.attachments,2),',',1),
SUBSTRING_INDEX(SUBSTRING(u.attachments,2),',',1)) as `Attachment` FROM geoint g LEFT
JOIN geoint_updates u ON id=record_id WHERE object_type IN ('POINT','MULTIPOINT') AND
incident_type='fire' GROUP BY id, update_id;quot;
NAME quot;fire_pointsquot;
METADATA
##wms metadata
quot;wms_titlequot; quot;fire_pointsquot;
quot;wms_authorquot; quot;USJFCOM J9quot;
quot;wms_srsquot; quot;EPSG:4269 EPSG:4326quot;
quot;wms_include_itemsquot; quot;allquot;
##wfs metadata
quot;wfs_titlequot; quot;fire_pointsquot;
quot;gml_featureidquot; quot;idquot;
quot;gml_include_itemsquot; quot;allquot;
quot;gml_geometriesquot; quot;standardquot;
quot;gml_standard_typequot; quot;pointquot;
12. Format Example
Layer Info (cont)
END
TYPE POINT
STATUS ON
DUMP TRUE
TOLERANCE 3
TRANSPARENCY 90
TEMPLATE quot;test.phpquot;
PROJECTION
quot;init=epsg:4326quot;
END
CLASS
NAME quot;fire_pointsquot;
SYMBOL graphics/flames.gif
END
END
15. How did MySQL grade out?
Pros
Cons
Incompletes
16. Unresolved Issues – Steps Forward
Speed of Google Maps
•
Grouping of layers
•
Standards Assessment
•
MySQL GIS function usage expansion
•
17. Thanks
Would like to thank Steve Judy who was instrumental
•
in the front end design and design of some of the
subtables used for this project
Also would like to thank Chris Kannan of NGA who I
•
bounced a lot of these ideas off of and who put me in
contact with people who had used MapServer before
18. Questions
Any Questions after the conference can be directed to:
Don Beesing
dbeesing@alionscience.com