proj4js coordinate transformations in the browser michael adair dm solutions group

19
Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Upload: cassandra-goodman

Post on 17-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Proj4jsCoordinate transformations in the browser

Michael Adair

DM Solutions Group

Page 2: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Proj4js

A JavaScript library to transform point coordinates from one coordinate system to another, including datum transformations

Page 3: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

The problem to solve

representing 3D information in a 2D medium

Same issue for paper maps and web maps on computer screen.

Mathematics defines: Coordinate Reference Systems (CRS)

Page 4: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Coordinate Reference Systems (CRS)

• consist of a map projection + datum• projections define 3D surface to 2D plane

transformation • datums define the size and shape of the

earth• geographic data is collected/stored using any one

CRS

Page 5: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Map Projections

• ‘project’ a 3D surface to 2D

• Applicable for defined geographic areas

• attempt to minimize distortions in area, distance, scale, etc.

Page 6: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Datums

• Datums define the size and shape of the earth• The earth is not a sphere, almost an ellipsoid

Page 7: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Examples

Page 8: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Examples

Page 9: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Examples

Page 10: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Examples

Page 11: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Back to the problem

• A map can only use one CRS

• Need to combine data stored in different CRS’s

• transformation is required between coordinate systems

Page 12: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Solutions for web mapping

• Vector data consists of a series of points representing points, line and polygon geometries (along with attributes)

• Coordinates in various CRS

On the server side:• PROJ.4, CS-MAP, GeoTools• Returns a raster already transformed (in general)• Raster images must be processed on the server

• Proj4js is for points, not rasters

It is desirable to manipulate individual features in the browser

Page 13: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Solutions for web mapping

• convert between CRS in the Client (web browser) with Proj4js!

• Allows client to maintain individual features for selection, highlighting, etc.

Page 14: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

About Proj4js

• A JavaScript library• Port of PROJ.4 and GCTPC (C code)

• ~50k compressed; less if not all projections needed

• Includes some datum transformations• Dynamic loading of CRS parameters (or not)• Dynamic loading of projection code (or not)• Easy to use with OpenLayers

Page 15: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Project infrastructure

• Originally developed in MapBuilder• Now part of the OSGeo MetaCRS project

http://wiki.osgeo.org/wiki/MetaCRS

• Wiki and Trac http://trac.osgeo.org/proj4js/

• SVN: http://svn.osgeo.org/metacrs/proj4js/

• Mailing lists: http://lists.osgeo.org/mailman/listinfo/MetaCRS

Page 16: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

How to use it

<script src="lib/proj4js-combined.js"></script><script src="lib/defs/EPSG42304.js"></script >…var source = new Proj4js.Proj(‘EPSG:4236’);var dest = new Proj4js.Proj(‘EPSG:42304’);var p = new Proj4js.Point(-76.0,45.0);Proj4js.transform(source, dest, p);….• p.x and p.y are now EPSG:42304 easting and northing in

meters

Page 17: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Demo

• http://localhost:8080/mapbuilder/examples/projDemo/index.html

• http://localhost/oltrunk/examples/graticule.html• http://localhost/proj4js/test

Page 18: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Demo (2)

• Equal area maps: http://www.equal-area-maps.com/mollweide.php

• KML: http://bbs.keyhole.com/ubb/download.php?Number=35858

Page 19: Proj4js Coordinate transformations in the browser Michael Adair DM Solutions Group

Questions?

Thanks for your interest!• http://trac.osgeo.org/proj4js/• http://proj4js.org/

Mike [email protected]

with graphics from Peter H. Dana, The Geographer's Craft Project, Department of Geography, The University of Colorado at Boulder http://www.colorado.edu/geography/gcraft/notes/mapproj/mapproj.html