Archive for the ‘Software’ Category

The 8th ICA Mountain Cartography Workshop was held in Tongariro National Park, New Zealand (map) during 1-5 September 2012. A couple dozen participants gathered to talk about maps, mountains & enjoy outdoor recreation. Martin, Tom, and I joined from the United States and other participants ranged from Argentina to Norway and the usual contingent from Switzerland and Austria. We had wonderful hosts in New Zealand organizing committee.

I prompted a flurry of PostGIS hate (and some love) on Twitter last week, documented via Storify.

I’ve been using PostGIS for around 2 years now both at Stamen and before that at The Washington Post. Let me say upfront that PostGIS is amazing and is definitely in the top 5 best FOSS4G (free and open source software for geo) out there. It is a super powerful spatial data store that is free to download, install, and use (even in commercial projects!). It’s can also be mind numbingly difficult to install and use.

It doesn’t matter how awesome something is unless it’s usable. If we want the FOSS4G community to grow and be adopted by more everyday users of GIS and general users for spatial data needs, we need to improve this situation. “Patches welcome” is a programmers crutch. Actually following up with user’s real world issues is where it’s at.

Besides the specific issues outlined below, PostGIS lacks basic functions required for spatial analysis found in ArcToolbox. Those are slowly being rolled out as sidecar projects running on top of PostGIS, and CartoDB is a good case in point. But unless you’re a programmer and can roll your own (and your project budget can afford it), that’s a #fail.

@PostGIS asked me for details on how it could be friendlier and I’ve itemized around 20 below.

Top 3 areas for PostGIS improvement

1. EASIER TO INSTALL

If a project that is considered core to the FOSS4G stack (eg Mapnik, PostGIS, etc), the project needs to act like it.

Our servers at Stamen run Ubuntu Linux and we have a variety of them, running different combinations of applications and operating systems. Our staff machines are Mac laptops. There’s some pretty good installers now for Windows and Mac it seems. But the Ubuntu support has been out of sync too often.

Request 1b: The APT package distribution of core FOSS4G projects should work with the last 2 versions (equivalent to 2 years) of Ubuntu LTS support releases, not just the most recent cutting edge dot release.

As of today, the latest LTS is 12.04, before that is 10.04. We just upgraded to 12.04 and are slowly upgrading the rest of our FOSS4G stack. This type of staggered versioning is standard in production environments.

While it’s nice to have cutting edge features, we also need to acknowledge that one app’s cutting edge features & cutting edge dependencies are another end-user’s dependency hell when installed with other software in the FOSS4G stack.

What’s amazing about Ubuntu is that they tell you up-front exactly how long they plan to support a particular version, in months and years (view timeline).

There should be an overlap period between the versions distributed in major package systems and the versions supported by the developers themselves, as well as an overlap with the release cycle of a system like Ubuntu. For instance, Mapnik is now thankfully in this state but for a long time supported the widely available 0.7 release inconsistently, but 0.7 was the only version widely available.

Request 1c: Backport key bug fixes to the prior release series.

We’ve all been burned by FOSS4G maintainers when say they’ve fixed problems in newer versions, but they don’t back port those changes to point or patch releases that are still compatible with LTS. Sometimes it’s unavoidable. Most of the time it’s not.

2. EASY DATA IMPORT, EXPORT, and BACKUP

Once PostGIS is installed it should be 100% usable without learning additional magic workflow. The existing workflow might seem normal to a Unix nerd or pro DBA administrator, but it’s not intuitive for a new user.

2.1: IMPORT & EXPORT

I should be able to import shapefiles, the defacto geodata format, easily like this:

How to get there is detailed below. Note that the advanced power of the import flags and even the piping of raw SQL is still there if you need it as a power user. But the basic import (and export) should be that simple.

Request 2.1a: Include a default PostGIS spatial database as part of the basic install, called “default_postgis_db” or something similar.

This new database would be the default import location for shp2pgsql and other utilities if the user did not specify a named database. This will reduce the learning curve for new and novice users as they wouldn’t even need to create a spatial database to get up and running.

If the user needs more than one spatial database because of project managements, they can still create new spatial databases and import into those.

This would remove the requirement of becoming a postgres super user to create the first (and likely default) spatial database.

Request 2.1b: Include a default PostGIS Postgres user as part of the basic install, called “postgis_user” or something similar.

Request 2.1c: If I name a spatially enabled database in shp2pgsql that doesn’t yet exist, make one for me.

PostGIS should be making my life easier, not harder. If a database of that name doesn’t yet exist, ask if it should be made (y/n) and create it, then import. If a database is named but doesn’t have the spatial tables enabled, ask if they should be enabled (y/n) and do so.

Request 2.1d: It’s too hard to manually setup a spatial database, with around a printed page of instructions that vary with install. It mystifies Postgres pros as well as novices.

The support files for PostGIS’s functions and spatial reference systems have been stored in a variety of places on the file system, requiring us to remember what files to add, a search to find their location, then incantations to actually import those onto a new database to enable spatial power.

Fixed? I hear this is fixed as of Postgres 9.1 by using `CREATE EXTENSION postgis database` to create databases that are spatialized. That’s super awesome!

Request 2.1e: Default destination table names in shp2pgsql.

The required destination_table should be optional if I want to not use the filename of the shapefile as the table name:

The | (pipe) in the shp2pgsql command workflow is confusing. Pipe it automatically for me. I know this is a Unixism. It’s also super confusing to new users.

Request 2.1g: If my shapefile has a PRJ associated with it (as most do), auto populate the -s <srid> option.

It’s 2012, people. Map projections are a fact of life that computer should be making easier for us, not harder. Manually setting projections and transforms should be a last resort for troubleshooting, not every day routine.

Right now I must manually look up what EPSG code is associated with each shapefile’s PRJ file and set that using the -s <srid> flag so that SRID is carried over to the spatial database. When this is not provided, it defaults to -1.

Related 2.1h Projection on the fly: If you still can’t reproject data on the fly, something is wrong. If table X is in projection 1 (eg web merc) and table Y is in projection 2 (eg geographic), PostGIS ought to “just work”, without me resorting to a bunch of ST_Transform commands that include those flags. The SRID bits in those functions should be optional, not required.

Request 2.1i: Reasonable defaults in shp2pgsql import flags.

Your mileage may vary, but everyone I know uses the following flags to import data: -dID.

Make these the default. Add warnings and confirmation prompts as appropriate.

Request 2.1j: Easier creation of point features from csv or dbf.

This is a basic GIS type operation. Now I need to import manually into a table and use SQL to create the point geometries detailed here.

2.2: DATA BLESSING

If PostGIS’s claim to fame is as a spatial data store, and no more, it needs to get better at accepting all data, and releasing it to the wild again.

I often get invalid geometries reporting from PostGIS on import of geo data that works perfectly fine in Mapnik, OGR, QGIS, ArcGIS, and other GIS applications. PostGIS is too obsessive.

See Section 3 below for more specific requests.

I’m still researching PostGIS 2.0 to understand whether this has all been fixed. It sounds like it’s been partially fixed in that it’s now easier to “bless” the geometry into a structure PostGIS likes better, but the underlying problems seems to remain.

2.3. DATA BACKUP

Data should not be trapped in PostGIS. We need an easy, transparent, forward compatible method of backing up data in one PostGIS database and restoring it into a new PostGIS database, either on the same machine, or a different machine, or the same machine with an upgraded version of PostGIS.

I should be able to backup data from PostGIS and have it be restored into newer copies of PostGIS without a problem (I constantly have this problem, especially between Postgres 8.3 and 8.4, maybe it’s fixed in Postgres 9.x and PostGIS 2.x?). I should be able to upgrade my DB and machines without it complaining.

PostGIS might approach this with a two-pronged system. If there’s a problem with the data, it could keep around the original version untouched alongside a cleaned-up interpretation, and be able to dump either on request. Or, there could be a flag on a geometry row that specifies whether or not strict interpretation is applied. Defaulting to strict makes sense to us and maintains backwards compatibility with old version, but offers an escape hatch for data funk with topology and other PostGIS errors. This is especially troublesome for the Natural Earth data, which is slowly being edited to conform with PostGIS’s overly “right” view of the world.

3. “INVALID” GEOMETRIES, AND POINTING THE FINGER AT GEOS

Falling under the heading: “Beauty is in the eye of the beholder”: Real world data has self-intersections and other geometry burrs. Deal with it. I often get invalid geometries reporting from PostGIS on import of geo data that works perfectly fine in Mapnik, QGIS, ArcGIS, and other GIS applications. PostGIS is too obsessive.

Request 3a:Topology should only be enforced as an optional add on, even for simple Polygon geoms. OGC’s view of polygon topology for simple polygons is wrong (or at the very least too robust).

I understand that PostGIS 2.0 now ships with a clean geometry option. Woot woot. I think there are underlying issues, though.

Request 3b: Teach PostGIS the same winding rule that allows graphics software to fill complex polygons regarding self-intersections. Use that for simple point in polygon tests, etc. Only force me to clean the geometry for complicated map algebra.

ArcGIS will still let you join points against a polygon that has self intersections or other topology problems. Why can’t PostGIS?

Request 3c: Teach OGC a new trick about “less” simple features.

The irony of the recursive loop:

PostGIS points finger at GEOS topology.

GEOS (JTS) topology is based on OGC Simple Feature spec.

OGC Simple Feature spec is based on an overly simplistic view of the world. It might be convenient in the expedient programing sense, but it’s not practical with real world data.

Everyone at OpenGeo is happy as it’s self consistent.

It’s hard for other people with real world data to actually use the software, sad face.

Request 3d: Beyond the simple polygon gripe, I’d love it if GEOS / PostGIS could become a little more sophisticated. Adobe Illustrator for several versions now allows users to build shapes using their ShapeBuilder tool where there are loops, gaps, overshoots, and other geometry burrs. It just works. Wouldn’t that be amazing? And it would be even better that ArcGIS.

We’ve just rolled out a new way for you to make atlases of the world, called Field Papers. Field Papers allows you to print a multipage paper atlas of anywhere in the world and take it outside, offline, into the field. You can scribble on it, add features, or make notes about the area, all without a GPS or complicated GIS software.

Once you’ve annotated your atlas, you can upload photographs of each page back into the system to transcribe your notes into digital form. Each atlas gets its own page on Field Papers, and a simple history of edits and activity which you can share with friends or colleagues, and download for later analysis. Take a look at some of the atlases that have already been created on the Watch page, or browse by place, like France or Liberia.

The interface looks like this:

This project is a continuation of Walking Papers, which was built for the OpenStreetMap (OSM) editing community. Field Papers allows you to print multiple-page atlases using several map styles (including satellite imagery and black and white cartography to save ink) and has built in note annotation tools with GIS format downloads. You can also create a Field Papers account to collect any atlases you create or snapshots you upload, or you can stay anonymous. Maps from the two systems work together if you want OSM editing (see below).

[Editor’s note: Where are home loans underwater? A thing I made at Stamen with Zillow is live, view your zipcode’s status on our interactive map! We’re using a UTFGrid to power the interactivity with new backend technology via Mapnik 2 and TileStache and frontend Leaflet.js map library to tie it all together over a Bing basemap. The assets were all statically generated and cached on S3 with a content distribution network in front of it. The piece has received coverage in the Wall Street Journal and other publications.]

Today Zillow made waves by becoming the most broad and accurate public source of negative equity information. We’re now able to tell, down to the ZIP code level, what the rate of negative equity is, how far underwater homeowners are, and the delinquency rate of underwater homeowners.

To make this data available to each and every one of you, we’ve worked with Stamen Design to create an interactive tool to allow you to explore the rates of negative equity in your local area. Just enter in your county, city, or ZIP code to narrow into your area. Click on the image below to enter the interactive map.

[Editor’s note: Expanded version of my post for The Washington Post’s @innovations blog.]

We use maps to show readers the “where” in our stories. But beyond simply locating the places mentioned in text, maps can create a larger narrative by adding context and showing trends (or animating the path of Friday’s royal wedding parade).

Krissy Clark, a reporter for KQED Public Radio in Los Angeles, summed up the “where” from the journalist’s perspective in her plenary talk at the Where 2.0 Conference last week in Santa Clara, Calif., “Stories Everywhere”:

The Where 2.0 Conference bills itself as a source for all things location-aware, or geo. Sessions explored the intersection of location technologies and trends in software development, business strategies and marketing.

The buzzword this year was “serendipity” — using customers’ locations, especially with mobile apps, to create experiences that delight them by providing them with relevant, unexpected information based on their locations (to paraphrase Jeff Jarvis).

This app gets the job done: PDF Maps introduces a strongly played set of basic features and later versions promise to add more advanced features like layer visibility and feature attribute query. Professional cartographers can use the app to deliver custom cartography maps that leverage GPS to locate the map-reading customer with the magic blue dot. It’s certainly not an ArcPad, but it works on the iPad and you’ll find it fun to use (and the app price is right).

I quite enjoy Avenza’s new free PDF Maps iOS app, free and available now on the iTunes App Store for iPhone and iPad. I’ve been testing it for several months using both the beta and final release versions. I’ve used the app in my neighborhood, on a cross country road trip, and we’ve been using it to ground truth maps at at my day job. I’ve created my own GeoPDFs and used those from USGS and Avenza.

Besides myself, I setup two non-cartographers with an iPad (3g with gps) and several GeoPDFs depicting neighborhood-level street maps to field check in the Washington DC metro area. They were amazed at how easy it was to locate themselves on the map and make notes by dropping markers they bring back to the office for me to review. Because these particular maps include street labels, they don’t need to switch back and forth to Apple’s provided Google Maps app as they navigate.

The inaugural version is iOS only but the company has had requests for Android, Symbian, Blackberry and even Windows 7 Mobile. Expect an Android version next. Future iterations of the app may introduce a two-tiered, free-basic feature and pay advanced feature parellel versions, which seems reasonable to me. I’m also excited to see if a white-label version becomes available (much like the Flash SWF export out of Avenza’s MaPublisher plugin for Illustrator) that cartographers can use to brand the experience and pre-bundle their maps.

PDF Maps offers the following capabilities:

View and load your own custom cartography maps and view them with GPS location

HD version for iPad same app as the basic version for iPhone, slightly reworked interface

Does not currently support waypoint export, a key feature

Does not currently support import of KML and GPX files

To create a GeoPDF, you’ll need ArcGIS 9.3.1+ to export from ArcMap with preserve coordinate system checked. Or use Avenza’s MaPublisher plugin for Illustrator (version 8.2+). You can also download thousands of GeoPDFs from USGS. Even though the USGS files use the TerraGo GeoPDF format specification (versus Adobe + ESRI’s), it will open and render in PDF Maps.app. Avenza also offers dozens of sample GeoPDFs linked from within the app to get you started (click Maps, then +, then From Avenza PDF Maps Library and browse the list).

Adding maps is as simple as dragging them to iTunes or attaching to an email (making it easy to send map updates to your field checker). Clicking on a PDF link on the iPhone or iPad now prompts to open in the app, as seen in the first screenshot above . Once opened in the PDF Maps app, it will take a few seconds to minutes to render, second screenshot above. Once open, several tools are available, the most important of which is simply the “locate me” triangle button on the map map view.

Even though it’s all about the PDF map you’re looking at, the app makes it convenient to open the same view in Maps.app to see Google’s version of reality for cross checking, especially using the satellite map tiles there. This is possible for both the current map view using the tools menu, and to open a specific waypoint marker after clicking it’s location field.

I’ve loaded PDFs with the app that are more than 10 mb of vectors and performance has been good. When the map first loads it will process and prepare several zoom levels of precached tiles. This will make panning and zooming faster during actual map use and is worth the wait.

During precache rendering, you can still use the map, but the parts that will still be loading will be fuzzy for a while. Very large maps (larger than 20 mb, or more than 2000 sq. inches) are slower to render in this version (hey, it’s a mobile phone). For larger areas, I’ve been splitting the exported map into separate files. When multiple maps loaded in, there is a Maps table of contents listing.

I found a couple continuing quirks with the app and one major missing feature. The app really needs to export the map’s waypoints as CSV, KML, and GPX as an email attachment. I wish repositioning an existing pin was easier. The hit areas on some buttons is small, making it hard to use in a moving car. Sometimes it’s nice to have multiple marker icon labels open, but sometimes that is odd. At any rate, there’s no way to close them all en mass.

Note: Because of USGS website quirks, it is not possible to directly download a USGS GeoPDF onto your iPhone/iPad in the field. The website doesn’t render properly (something about IE and cookies), and the resulting download file is ZIP format rather than PDF. Not sure why, since the PDF should already be optimized for file size (there’s only a 1.5% file size savings between ZIP and PDF in the Washington D.C. West quad sheet).

[Editor's note: As the GIS community prepares for the just released ArcGIS 10 and gathers for the annual User Conference in San Diego, Ezree cum E.S.R.I. has posted a Question and Answer FAQ about the new release. Notable to me: Visual Basic for Applications (VBA) is resurrected for the last time, time to learn Python! James Fee translates from corporate speak.]

A: At ArcGIS 10, functionality has been added to allow you to create map books using a feature layer to define map extents for multiple pages. This new functionality, in conjunction with all the other enhancements to support map books, is referred to as data driven pages. Data driven pages give you the ability to generate multiple pages by taking a single layout and iterating over a set of map extents. Any feature layer, point, line or polygon can be used, along with a margin, to define the extents.

A question I still get asked again and again is when is ESRI going to update DS Mapbook. Well now you’ve got a real solution built into ArcGIS 10.

Q: Does ArcGIS 10 open up more functionality for use with Python?

A: Python integration is one of the key features of ArcGIS 10. At this release we’ve introduced a new Python subsystem called ArcPy, which exposes many of the ArcGIS functions.

Once a required computer application in many cartography shops in the 1990s, Geocart has come back with a vengeance with Mapthematic’s 3.0 release (Mac and now Windows).

“If map projections are your problem, Geocart is your solution”

While most GIS and remote sensing map software support a couple dozen obligatory projections,Geocart supports over 175 general case projections. Map projections are mathematical formulas for converting the earth’s round shape to a flat surface and their “parameters” can be adjusted to form thousands of specific projections. For comparison, ArcGIS, the popular commercial geographic information system software from E.S.R.I. supports 1/3 as many projections; MaPublisher from Avenza supports 1/2 as many as Geocart.

The program’s author, daan Strebe, is a leading authority in this specialized subject and the new version incorporates corrections to many standard formula resulting in near loss-less projections. Unlike other software packages, Geocart can transform any projection to another projection (full forward and inverse transformation support for all projections). Other map applications can damage data when it is transformed. Furthermore, Geocart 3 introduces a new rendering mode using PixSlice technology to create a sharper, more detailed raster images (examples after the jump). This works both for resizing images and when transforming from one projection to another (reprojecting).

The application manual includes a handydecision tree to assist in what projection to use depending on the map’s topic and geographic coverage. The application includes innovative advanced tools to visualize the distortion inherent in each projection (sample image).

Pricing: For lapsed users, upgrade pricing is available for $500 with new professional licenses running $860, discount for multiple purchases. Steeply discounted non-commercial and student licenses are available. Price includes map databases (36GB with the pro version!) and, importantly, the new version imports shapefiles, the defacto geodata format.

Full review continued below . . .

Installation

I tested Geocart using the free, month-long trial(note the watermarks in the screenshots). Download and installation (once for the application, again for the default databases) went quickly but you will need an administrator account to accomplish the install. When the package downloads, it is labeled with your operating system type rather than “Geocart” so in my case I looked for “Mac OS 10.5/10.6″ in my downloads.

The app and included databases each weigh in about 150 mb for 300 Mb of disk space. Rather than collecting associated database files in the Applications folder (Program Files on Windows), they are installed in Library > Application Support > Mapthematics > Databases. If you want quick “template” access to frequently used data, it should be added in that location. The “add recent databases” command partly makes up for this.

Setting up a map document

To start mapping, go to File > New. Then go to Map > New. Multiple maps can be stored in a single Geocart document, each having their own projection parameters and database content.

When making a map, the first step is to determine how large the map dimensions will be and how much geography it will show. The relationship between the two is called map scale. Some databases, like Natural Earth, are set up based on map scales. Using the right database will result in prettier maps that are generalized appropriately (the linework doesn’t look too detailed or too coarse) and smaller files that are easier to work with.

Geocart also includes a useful linework simplification routine when your data is complex and needs to be simplified. This toggle is on by default and is accessed under Map > Generalize vectors. Toggle it on and off to compare the resulting resulting lines, your mileage will vary by map scale, even with the same source database.

Tip: The application takes map scale seriously and includes a tool to calibrate your system under Preferences > Display. This calibration functionality is absent to most other mapping packages.

To add data to the map

Each new map starts with “Stylized World Topo 5400×2700″ raster image in layered with a vector grid (Map > Graticule) in sinusoidal projection. With the map selected, go to Map > Databases. I was able to easily add in shapefiles from Natural Earth, some of which are included in the default databases. If you have existing Geocart 2 format databases, those will import directly, including typesetting databases.

Tip: To modify which databases load for each new map, go to Preferences > New Map Databases. I set mine to use Natural Earth country boundaries but removed the default image database.

Have a scanned map without a projection?

Geocart will help you figure it out. Add the map with File > Place image. (Vectors are not supported at this time). Then align with a map with a vector map database. Adjust the settings of the map until it matches. Then choose File > Export Database. Load the database back into a Geocart map and start projecting.

I was also able to add several map images and quickly georeference them and then deproject to geographic (platte carrée) or into another projection. One was a simple map of the ash plume in Europe in Mercator. The other was a complicated world wall map from National Geographic in Winkle Tripel (examples below).

Tip: When georeferencing an image, maximize both the map and the placed image to fit the window (Map > Scale to Window). Then adjust your Geocart map to use the same boundaries as the placed map image (make an educated guess). Then cycle thru the projections until the vector lines (graticule and country boundaries, etc) begin to match. Mercator and Robinson are common for world maps, a conic like Albers or Lambert is common for country and state maps. Then adjust the projection parameters and fine tune the boundaries and nominal scale and map resolution till everything fits exactly. Finally, export the placed image to database format.

Note: For raster maps that are georeferenced, the exported database file remains in the native projection of the image (it it not transformed to geographic). This does not affect your ability to reproject the image, however

Choose a projection

The familiar icons by projection class are still found in the main menu bar (see screenshot above). With a map selected on the document, choose a different projection (some are even listed in cyrilic and arabic!) and watch the map update in real time.

If you want assistance in choosing a projection (who can remember all their quirks!?), check out Projection > Change Projection. A dialog with the same listing comes up but with descriptions, history, preview maps, and distortion information. Gain insight with the programmer’s unique and comprehensive expert knowledge will help guide your projection choice. While the map is projecting, a progress wheel with a rough remaining time will show in the upper left corner. Advanced datum support and transformation are provided.

Tip: The manual includes a full decision tree for choosing a projection. This is one of the best features of Geocart.

I love interrupted projections like the Goode homolosine and making one in Geocart is a cinch. Simply choose the Goode from the Pseudocylindric menu (oval icon on left) and then chose Projection > Interruptions > Goode Continental. While you’re getting the projection parameters, map size and resolution right, keep the rendering quality at draft (Map > Draft). When the settings are right, change that to Map > Final Quality for more precise results.

All databases in Geocart are geographic with live, on-the-fly transformations into your map’s specified projecting (see exception above for georeferenced images). I added in coastlines, rivers, lakes, country boundaries, US state boundaries into my test vector map. Even on my slowest, older laptop, rendering was responsive for basic usage creating vector world, regional, and country maps.

Tip: If you somehow end up with a strange looking map (off center, etc), choose Projection > Reset Projection and the current projection parameters will revert to defaults

Tip: When using a conic projection like Albers or Lambert, make sure the Projection > Projection Center is set to Latitudinal 0°N.

Geocart 3.0 is a world unto itself, however. While it does import raw data in shapefile format (YES!), it does not currently import or export PRJ files, part of the SHP file specification, the defacto geo data storage and exchange format. Imported SHP files must be in geographic projection. This makes sense in part as Geocart supports many more projections and parameters than most other mapping software packages (3 times as many as ArcMap, 6 times as many as Natural Scene Designer, 2 times as many as MaPublisher and Geographic Imager). Geocart also sometimes uses slightly different formulas for the same projections as the other applications (the author claims Geocart’s implementations fix errors in common formulas, which is probably the case based on my experience with the literature and web source code snippits).

But for the projections that are shared in common, it would be useful to offer PRJ support (including transformations out of the error prone versions), and shapefile export of databases after their coordinates have been transformed (and GeoTIFF for raster).

More importantly, PRJ files offer a quick load of common projection parameters. So if I’m in California I can load up the Albers with the standardized parameters so my data will interoperate with other cartographers working in that area, and they take some of the guess work out of choosing a map projection. Both ArcMap and MaPublisher are better then Geocart in this regard. MapTiler thru Proj4 is the worst. Azimuth (r.i.p.) is the best at setting appropriate projection and parameter for the visible, selected geography.

Tip: If you do have a PRJ file, open it in a text editor and manually copy over the parameters to Geocart. They use a “well known text” structure that is human readable.

Legend editor (stylizing your map)

Geocart includes basic legend editor for setting line and fill styles, appropriate for general reference mapping. Geocart is a general projection tool, not for making thematic maps. The layer sorting of individual databases is adjustable in the Map > Databases dialog.

Tip: Consistent styles can be shared between map projects by going to Preferences > New Map Line Styles.

Testing the limits

Don’t want to plot the entire world? Use Map > Boundaries to set a crop (and speed up map rendering). This window is quite amazing and has both 2d and 3d views with actual spherical trapezoids! Boundaries can be set relative to the projection center and can be a circular diameter, spherical trapezoid, or irregularly shaped “custom” boundary. To remove the boundaries, change the setting back to “Unconstrained”.

Quibble: When adjusting boundaries in most conic projection, your standard parallels should also change. A prompt should be provided in this use case to automatically adjust those to your new view. In the special case of setting standard parallels in Projection > Parameters, it would be helpful if Geocart showed these on a map like in the Projection Center dialog.

Quibble: The draw on map interface in Boundaries needs a little more work for modifying the existing settings. Other apps, like Geographic Imager, allow me to drag the edges of a drawn boundary while in Geocart I have to start over (or use the number fields). It’s also a little wonky when dragging exactly horizontal or vertical (a full latitude or longitude strip). There are also no ticker buttons to increment the parameter values, either. Once you have this set, though, you’re golden so it’s a minor inconvenience.

Next: Rendering quality and speed . . .

Above: Brand X on the left. Geocart at right. Examine the letter forms (U in United Kingdom, N in London, all in Paris, the Ca in Cariff). The Geocart render results in sharper, crisper letter forms with less “pixel burrs”. The demo water mark not with standing.

Rendering quality

The key concept is Geocart creates an optimized map on each render. The original data resolution is stored in the document, but what draws on the screen is determined by the map size and resolution. Set that in Map > Set size and resolution. Once adjusted, the map will fill that space in the window. You can zoom in and out with the normal Cmd-+ and – keyboard shortcuts and the zoom with update in the window title.

When Geocart is set to render in Final mode, its output results in better output than applications that use only nearest neighbor or bicubic interpolation. In the example above, looking at the letter edges on London, the Geocart version is crisper and smoother. This also comes into play at the edges of a world map where the projection distortion is more extreme and is especially important with projecting raster data.

For my heavy-use scenario, I put Geocart up against the latest National Geographic world map

The map is in Winkel Tripel projection. I rasterized the PDF (took about 1 hour with Photoshop on my old laptop) and then loaded the image into Geocart and georeferenced it and saved it out as a database (78 mb, seems small), see section on Adding map data above. I then reprojected it Goode homolosine in Geocart. I also ripped out a platte carrée from Geocart and projected that into Goode in Geographic Imager, Natural Scene Designer, MapTiler (Proj4), and ArcMap.

The final projected Goode image dimensions was 22,700 pixels by 9,910 at 675 mb in TIFF image format. Enough detail to print back out as a wall map or tile for a web map service.

Geocart is built for speed and will utilize all processors, including multicore

Paul Messmer’s under the hood improvements allow the application to make 100% use of all processor cores. I was still able to use other applications while Geocart processed data, however. One side effect of supporting multiple cores is rendering occurs per core in real time, see screenshot below. Geocart also plays nice on idle.

I tested Geocart on 3 different machines, all Intel Macs running 10.5 or 10.6 from an older laptop to a new desktop towers. Application task completion speed increased directly proportional to the number of cores available.

Fun fact: Geocart uses a Hilbert curve to render the map when utilizing multiple cores to keep memory accesses as local as possible in order to make the best use of the processor caches. This results in seperate render traces on the screen, see image below.

At best “final” settings, the huge map in Goode homolosine projection described above took 20 min on the 16 core Mac Pro (2 x 2.93 quad core GHz quad-core Intel Xeon with 8 gb of RAM) but 1 hour 20 minutes on an older 4 core Mac Pro with the same RAM configuration. The draft render took significantly less time and was comparable in time and quality to Natural Scene Designer, Geographic Imager, ArcMap, and MapTiler (Proj4).

Because Geocart is always planning for the most general case with the most advanced options, this can slow down it’s rendering compared to other applications (most noticeable when in Final rendering mode). Future versions might speed up if special functions were added for the standard parameter cases. But by the time the programmer did that, the speed difference might be equivalent to increases in hardware speed and cores, so this doesn’t worry me much.

Compared the competition

Geographic Imager ($699 for Adobe Photoshop plugin, add $699 if you don’t already own Photoshop) did not support the interrupted form of the projection and produced confetti until I tweeked the settings. To project vectors, you’d need MaPublisher, a vector plugin from Avenza for Adobe Illustrator, will set you back $1399 plus cost for Illustrator. ArcMap (thousands of dollars) required a RGB (not indexed) version of the geographic TIFF version but insisted on reprojecting into grayscale. Natural Scene Designer ($160) produced the most comparable raster results and ease of use, but at less quality (though faster). It should be noted the Pro version of Natural Scene Designer 5 also supports multiple cores and limited vector shapefile support (raster rendering only), plus better handling of GeoTIFF with TFW export. MapTiler, Mapnik, and other open source GIS options are free but you’ll spend time setting them up and learning their make-by-and-for-programmer quirks.

Visualizing Distortion

Geocart is a good teaching tool as well when using the distortion visualizations and mouseOver readouts (available under Window > Information). The pertinent readouts are Angular deformation, Areal inflation, Scaler distortion, and Scale factor range.

Note: Geocart quit on me once when I tried to use Map > Copy Attributes while visualizing distortion with a very large selected map, but I was not able to replicate the error or any crash in subsequent testing sessions. In general I’ve found the program to be very responsive and to not hang up, even when rendering extremely large maps with multiple databases.

Quibble: The Information panel should display how long it took to render the selected map.

Exporting

On exporting out your final map, vector (PDF) and raster (TIFF, PSB “Photoshop”, and JPG) formats are available. On opening the map in Illustrator, each database layer is conveniently grouped, with clipped content. Geocart could take a page out of IndieMapper’s layered SVG approach where the file format would still be PDF but the groups would be named and even better yet actual PDF layers.

Quibbles: Geocart suffers from the same zealous masking and embedding as other apps. If no boundaries have been defined in Geocart, the clipping masks should not be included. Saving out as PDF will embed the raster databases into the file, like all other programs. On export of the raster formats, an option should be provided to NOT export the vector database layers. Another option should be provided to export each raster database layer to a separate file (or layered TIFF / PSB). Needs to export out a PRJ file for the raster and GeoTIFF with embedded registration, pixel size, and projection tags.

Note: If you’re looking for SHP export, you’ll be disappointed. Though that’s kind of missing the point of Geocart. See “Choose a projection” section above.

Final word

Geocart 3 is a solid release that will satisfy most of your reference mapping needs, especially if projection matters to you. If you liked Geocart 2, you’ll definitely enjoy working with version 3, and on the latest computer hardware it simply screams. The addition of direct shapefile import removes a barrier to geodata access, though more could be made of the PRJ files and DBF attributes. There are still some missing features when compared to version 2 and daan (the programmer) is interested in hearing from the cartography community which should added back. They also seem responsive to fixing some of the usability issues I’ve noted above.

But where are those Kelso Corners, I ask? Besides being a personal soapbox, my blog is named for the “corners” that form when a pseudocylindric or lenticular projection is extended to fill out it’s rectangular bounding box by repeating content that would otherwise only be found on the opposite edge of the map. They are righteously awesome, plus they satisfy non-carto designers proclivity to design to a boxy grid. However, you can only find these “corners” on a few old print maps; I don’t know of a single digital app that creates them. I’ve staked naming rights

Pros: Over 175 projections (best in industry), support for advanced projection parameters, loss-less reprojection, PixSlice technology for sharper, more detailed raster images. Runs on both Windows and Mac, with support for multiple core processors. Now imports shapefile vector map data. Large document support. Easy to use. Software programmer responsive to emails and forum posts.

Cons: No PRJ support. Does not export GeoTIFF, or world file created after georeferencing images. Does not include a SHP filter in file dialogs, and file dialogs do not remember last browsed directory. Should start with blank new document on launch. Linework generalization engine filters just by Douglas-Peucker in this version, not the smooth bezier curves found in Geocart 2 or the amazing generalization found at MapShaper.org. Rendering in PixSlice can significantly increase render times. No support for scripting/automation. No export back to SHP format (especially with DBF attributes), useful for thematic mapping in a secondary GIS application.

Version 1.1 brought Natural Earth up to ~7,000 populated places (purple hollow circle icons with labels). Version 1.2 will increase that by 25 times to about 175,000 populated places. It will be available as a supplement to the 1.1 version selection. What does this get you? A 1:1 million scale map of cities around the world and a 1:250,000 scale map of the United States and other select countries. There’s still basic selection work to be accomplished (Santiago Chile has duplicate points now, as does London) and scale ranks need refining (boosting blue 10 million, 5 million and 2 million selections from the 1:1 million black dots on these preview maps).

Because the world’s geo infrastructure sucks, not all the new features will have population counts in the 1.2 version. But most should have areal extent bounds and nesting to indicate if the town is part of a larger metro area. At the 1:250,000 scale (gmaps zoom 11), we start to see actual incorporated towns and unincorporated suburbs, but at the 1:1m scale we’re still dealing primarily in metropolitan and micropolitan features (urban areas that host multiple “cities”).

The names of the feature will also need work, but that will occur after the 1.2 release (India, China, and Central Asia mostly). The version 1.1 locations will be shifted over to use the more accurate geoNames lngLats for about 6,000 features (note Oakland below). Locations were fine at 1:10,000,000 scale but don’t always hold up on zoom in. A later update will incorporate an additional 100,000 places to flesh out the 1:1m scale and maybe a few extra for closer in. Combine these populated places with roads and they start looking like atlas plates