Contact: devloic at gmail dot com

0.931 released : corrects xml content type problem with Firefox

There were some problems with the demo online so I released a new version of exportGge.
Version 0.931 sends a text/xml content type header with the SOAP response so Firefox handles the response correctly.
Core file server/SoapXMLCache.php should handle this in readSoapXML() so I am opening a ticket in CartoWeb bugzilla for this.
Besides that exportGge 0.931 replaces some hardcoded url in soap.tpl with a dynamic value.


exportGge 0.93 out featuring OpenLayers and Google Earth Plug-in !

The release of exportGge 0.93 may mark a turnaround in the development of the CartoWeb 3 branch. The integration of OpenLayers makes the php cartoclient obsolete. The result is less server side processing ( processing is now made inside the browser), a more snappy interface and faster speed of development for the web interface ( no more javascript/php plumbery ) . We get closer to the CartoWeb 4 = MapFish architecture but we keep good old PHP. Technically speaking the integration of OpenLayers was made possible by forging SOAP messages... with javascript. The browser communicates straight with the cartoserver part of CartoWeb through SOAP. It is questionable if CartoWeb 3 should stick to SOAP in the future because of it's verbosity , some alternatives like json might be a better choice but at least exportGge 0.93 pushes the limits of CartoWeb 3 a little bit further away and who knows might refresh some existing applications.Using OpenLayers for the CartoWeb client side allows to take advantage of the achievements of the OL community but also to contribute to this great framework. I guess that's something.
These are the improvement/features that come with exportGge 0.93:

  • added javascript SOAP library extending OpenLayers to access cartoserver in SOAP
  • OpenLayers frontend in SOAP mode allows following functions ( everything coded in javascript) :
  1. easy identification of geometries on map with markers or by browsing metadata
  2. table sorting/pagination of metadata
  3. metadata fulltext search
  4. export to PDF ( disabled in IE)
  5. export to csv
  6. google earth visualisation inside browser
  7. distance and area measure, back/forward history,pan,zoom,opacity, layer reorder
  • added google maps api support including google earth api
  • upgraded to yahoo maps api 3.8 , virtual earth api 6.1 and KML 2.2 ( validated with )
  • faster KML "snapshot" export (no more http redirect)
  • set refreshInterval to 0 instead of 1 to avoid repetitive reloading in google maps
  • more precise overlay inside google earth
  • KML export to google earth works in SOAP mode (ie cartoserverDirectAccess=false)

Known issues:

  • when cartoserver and cartoclient use different domains ajax SOAP Post requests will fail. I tried to use other technics like "" andposting from inside an iframe but I got stuck because of the problem I describe here: asynchronous-cross-domain-POST-request-inside-openlayers
  • the Google Earth Plugin will crash if it's hidden so switching from  google earth mode to another mode and then switching back to google earth mode will make the plug-in crash. This issue is documented here :
  • CSV export with IE is troublesome because of the information bar popping up a security alert
  • image fragments corresponding  to OpenLayers layers appear in the background of Google Earth placemarks

Special thanks go to the authors of:

Javascript "SOAP Client" library :
geoxml :
TrimPath JavaScript Templates :
jquery tableFilter:
jsPDF :
jvanulder extended OpenLayers layerswitcher :
proj4js :
and also to the authors of the following jquery plugins :
cacheimage, cookies, truemouseout, jcache, jQuery Post, table2CSV

Cartoweb internationalization without php gettext extension loaded

I18nGettextZend class was developped to avoid caching problems with gettext extension on linux. It was not possible to update .mo files without having to restart Apache. With I18nGettextZend new .mo files are used without the need to restart Apache. I18nGettextZend doesn't need the php gettext extension to be loaded. It uses Zend_Translate from the Zend Framework. I18nGettextZend implements cartoweb I18nInterface and uses singleton pattern. The installation procedure replaces cartoweb3/client/Internationalization.php with a modified version that includes I18nGettextZend. This version is intended for CartoWeb 3.4 . A version for CartoWeb 3.5 is being tested.

AttachmentSizeHitsLast download
I18nGettextZend.zip1.23 MB8321 day 1 hour ago

Distance and area tools working with degrees UPDATE 22/07/2008

CartoWeb's distance and area javascript tools used to work only with mapfiles in UTM. With the Dmstools plugin available for download below it is now possible to have these tools working with epsg:4326 for example. Dmstools plugin also converts all coordinates to degrees/minutes/seconds on the fly in javascript. Check the readme.txt in the plugin archive for installation.

UPDATE 22/07/2008
: refactoring of dmstools.js to avoid conflicts with dhtmlAPI.js


AttachmentSizeHitsLast download
dmstools_22072008.zip7.9 KB6152 days 8 hours ago

exportGge 0.92 alpha released!

This version adds major new features. Export is not restricted to KML anymore as layers can now be exported to geoRSS and geoJSON. Theses two new formats allow exportGge to visualize data inside Virtual Earth (via geoRSS) and Yahoo Maps (via geoJSON). Data presentation inside Google Maps is now also possible via geoRSS. Check the demo and make a query to get the links to these different export modes.

For developers, exportGge has now a debug mode which makes it easier to trace the smarty templates used as well as the source of data ( cartoweb layer, mapserver layer, shapefile name ).
Each layer can now have it's own smarty template so this makes it easier to create different presentations for different types of data.

Dependency to CartoWeb query and tables coreplugins is still strong but I'll continue the effort to reduce it.

Exporting data is cool (?) but why not consider .... importing data from these formats ! CartoWeb already has the necessary functions to do that, it's just a question of funky plumbery. If there are people out there who are motivated by this challenge please get in contact with me : devloic at gmail dot com .

Complete PDF documentation including screenshots available below.

Happy mapping!


AttachmentSizeHitsLast download
exportGge_092_doc_english.pdf1.82 MB26742 days 13 hours ago

About using junctions to deploy CartoWeb projects

I found it very troublesome to redeploy a project on command line each time I modify a javascript file or a css. This only affects Windows systems as cw3setup.php creates symbolic links on linux. Although it isn't an officially supported function, symbolic links are available since Windows 2000 and are called junction points.

I have modified cw3setup.php (based on CartoWeb 3.4 RC1) so it uses junctions instead of copying directories and files under CARTOWEB_HOME/htdocs .
Junction.exe must be available in the systems path ( ex: C:\WINDOWS\system32 ) .
Junctions are only supported on NTFS volumes but you can still create a junction on a NTFS volume that links to a directory on a non-NTFS volume.
Junction.exe can be downloaded below or from Microsoft site :

cw3setup.php syntax doesn't change. For deploying it's still something like:
php.exe cw3setup2.php --install --project myproject --base-url http://localhost/cartoweb3/htdocs/

If u wan't to avoid using junctions add the --no-symlinks options :
php.exe cw3setup2.php --install --no-symlinks --project myproject --base-url http://localhost/cartoweb3/htdocs/

You still need to redeploy if you create new directories in your project that contain css, js, gfx or so, for example when you create a new plugin that owns a htdocs directory.

I renamed the modified cw3setup.php to cw3setup2.php. It is available for download below.
cw3setup2.php has been tested on Windows XP with Junction 1.05 but should work on Windows 2000. Windows Vista has it's own implementation of symbolic links so I have no idea if junction points still work.

More info about junctions here:

This version is intended for CartoWeb 3.4 . A version for CartoWeb 3.5 is being tested.


AttachmentSizeHitsLast download
cw3setup2.phps39.79 KB30566 days 4 hours ago
Junction.zip45.29 KB57719 hours 47 min ago

What is exportGge ?

exportGge is a KML,geoRSS and geoJSON export plugin released under GPL license for Cartoweb, an open source web mapping solution working on top of UMN MapServer and written in php5.
With exportGge it is possible to :

exportgge google maps screenshotexportgge google earth screenshot
  • view each cartoweb generated map in Google Earth as a ground overlay
  • view each point , line, polygon as a placemark in Google Earth including metadata
  • view each mapserver layer inside Google Earth as a WMS layer. The WMS layer gets refreshed according to navigation inside google earth (Network links)
  • view all the above listed data inside Google Maps
  • view layers (except rasters) inside Virtual Earth and Yahoo Maps
  • export layers in raw geoRSS and geoJSON format
  • the data exported can be the full extent or a selection using CartoWeb's querying features

exportGge is intended to work with the latest CartoWeb version ( 3.4 RC1 ). Some features might work on previous versions.
exportGge is available through the modified default demoCW3 CartoWeb project here. A demo is available online here.
You are very welcome to contact me by email at devloic at gmail dot com or directly online on the right of this page.


exportGge 0.91 alpha available for download!

With the release of exportGge alpha 0.91 that adds CartoWeb layer export to Google maps, two more links are available on top of page: one opens a demo site and the other shows exportGge screenshots.
ExportGge is an open source tool released under GNU GPL license.

exportGge 0.9 alpha out !

exportGge allows you to export Cartoweb layers to KML and visualize them in google earth.
The plugin is available inside a Cartoweb project (modified demoCW3 project). This should make it easier for testing it rapidly without having to go through the configuration of a new project.
I would appreciate all kind of feedback about it. Feel free to contact me.
Happy KML exporting!