Technology
Overview
There are 3 main components to the MARCO Portal:
- Portal website
- Marine Planner
- Data Catalog
The Portal website is hosted using the Wordpress platform. The Marine Planner and Data Catalog are separate applications integrated into the website and are described in more detail below. The code is available for all three and you can watch the ongoing development on the GitHub project site. If you have any questions or are interested in learning about or using any of the technology please contact Tim Welch at Ecotrust, 503-467-0786.
MARCO Marine Planner
The Marine Planner application is a decision support tool for state, federal, and local decision-makers and the public to visualize, query, map, and analyze ocean and coastal data in the Mid-Atlantic region.
The current version of the Portal was developed using ArcServer and the ArcGIS viewer for Flex. While it functions well as a data viewer we recognized it isn't designed for collaborative decision support. There is no notion of user accounts, groups, private data, sharing, etc. The decision was made to continue to leverage the excellent ESRI basemaps but to develop an enhanced Marine Planner application using the Madrona framework. This enhanced portal will be introduced with release 2 of the MARCO Portal.
Server-side libraries
Madrona is primarily a server-side framework built on top of the Django framework. It provides a number of features tailored for spatial planning including a powerful spatial CMS with a full REST API and support for sharing between users and groups. PostGIS is used as the backend database. Other server-side libraries will be integrated as needed for spatial analysis and reporting features.
Madrona
Learn More
- Spatial CMS
- Collaboration
- Map Bookmarks
- Data Layer management
- Spatial Analysis
- Reports
Django
Learn More
- Model-Template-View architecture
- Automatic admin interface
- Elegant URL design
- Template system
- Caching
- Internationalization
- User accounts and groups
- Content management
- Third-party packages
GeoDjango
Learn More
- PostGIS support
- Geographic models
- Object-oriented spatial queries
- GEOS Python API
- GDAL Python API
PostGIS
Learn More
- Vector and raster support
- First-class geographic data types
- Full spatial query support
- GiST indexing
Client-side libraries
The Madrona framework gives us the flexibility to use whatever technology we want. For this particular project it was decided that a 2D mapping solution would provide better performance and cartography than a 3D Google Earth solution. Licensing of the free Google Earth plugin was also a concern for some agencies. A number of 2D mapping clients are available but we decided that this project required the use of UTFGrid layers for scalable map feature interaction, mobile support (touch interaction), as well as support for vector drawing/editing on the map. The only mapping client that matched these requirements was OpenLayers. For the application UI and interaction we decided to go with the Bootstrap and Knockout libraries. Robust, extendable and cross-platform, these libraries take a lot of the pain out of UI development.
JQuery
Learn More
- Lightweight
- Cross-browser DOM manipulation and event handling
- Extendable through plugin architecture
- Extensive third-party plugins
OpenLayers
Learn More
- 2D tile-based maps
- Vector support with drawing tools
- Extensive support for mapping services including ESRI basemaps and UTF-Grid
- Google maps integration
Bootstrap
Learn More
- Grid layout system
- Support for responsive design
- Suite of UI widgets
- CSS3 support
Knockout
Learn More
- Simplifies dynamic Javascript UI's
- Templating
- Automatic UI Refresh
- Dependency tracking
Map production
ArcGIS is the product of choice for processing of data layers and map production. The Arc2Earth plugin is used to export maps as tile layers for use by the web mapping client. Arc2Earth allows you to render tiles for only the region you desire and for as many zoom levels as you need. All zoom levels are pre-rendered and published to Amazon S3 for exceptionally high-performance serving of map tiles through Amazon CloudFront at a relatively low cost.
The one thing that the ArcGIS-based workflow does not support is UTFGrid output. This is the key to getting scalable map feature interaction. Suddenly you can hover over a feature and get its attributes as opposed to having to click on the map and query the server for what feature is at that place on the map. To get this UTFGrid functionality we use TileMill, a cross-platform map production tool created by Development Seed.
Arc2Earth
Learn More
- Robust map tile production (more features than ArcGIS)
- Publish directly to Amazon S3 storage
TileMill
Learn More
- Supports UTFGrid layer creation (ArcGIS does not)
- Robust workflow for map production
- Powerful carto map styling language
- Excellent rendering quality with Mapnik map engine
Hosting
The MARCO Portal is hosted on a Ubuntu Linux Server on Amazon's Elastic Compute Cloud. We maintain a development and production server at a hosting cost of about $3000-$4000/year depending on usage. Large files such as map tiles, videos, and other static media are hosted on Amazon S3 and published through Amazon CloudFront. This takes the load of serving all of that static content off of the application server.
Amazon EC2
Learn More
- Pay only for the resource you use
- Scalable infrastructure, add more resources during times of anticipated high-server load
- Simplified server maintenance
- No physical server, straightforward transition of control
- Secure
Amazon S3
Learn More
- Scalable - never worry about performance degrading due to the number of people accessing files
- Inexpensive
- Secure
MARCO Data Catalog
Coming soon