Reprojected

A warped look at spatial...

FOSS4G 2007

FOSS4G 2007

Paul and company up in Victoria BC have posted info about the 2007 FOSS4G conference. I cant wait for September to role around… this should be a great conference this year!

FOSS4G takes place September 24-27, 2007, at the [Victoria Conference Center](http://www.foss4g2007.org/conference_venue.html), in [Victoria](http://www.foss4g2007.org/about_victoria.html), British Columbia, Canada.

This year the OSGeo will be taking a large role in the development of this conference and it will be great to see how it works out. I personally have high hopes that this will be a defining moment for the OSGeo and the FOSS4G community as a whole.

Topics to Come

Thought I would take a few minutes tonight to brainstorm some topics I will be writing about in the near future. There is not any particular order but it does give an idea of some of the things I am working on currently. Looking forward to writing some of this up.

http://media.reprojected.com/geoblog/topics-to-write-about/

Comments and suggestions are always welcome…

Man Am I Slow…

Sean Gillies posted about this talk at the end of November and it just got posted on Slashdot yesterday, but it was only until last night that I woke up and watched it. While _ Eben Moglen _might not be able to bring down the house with his camera presence, his talk on social justice and Open Source software is truly interesting and inspiring.

Well worth it… an hour well spent.

FREE Web Hosting for Non-profits

Man you cant get any better than this:

http://wiki.dreamhost.com/index.php/Non-profit_Discount

We at Ecotrust just signed up… can’t beat 1/2 terabyte of storage and 5 terabytes of bandwidth… FREE!

This personal blog is hosted there as well under my personal account, but if you are a non-profit interested in playing with Mapserver/PostGIS/GMT/GRASS you can check out my post on installation in this environment to get up and running with web mapping… FOR FREE!!!

Enjoy

UPDATE (12/09/06): For those who are not in the non-profit world but are still interested in Dreamhost for cheap hosting I just created a promo code that gives the FULL $97 discount to you… Nothing to me. Dreamhost works on this crazy “reward” system for getting people to use you as a referal, offering a finders fee to the current customer. I have created this code to apply all of the finders fee to your discount… I get NOTHING. It is ZPULLEYFULL , enjoy!

New Open Source Based Web Mapping App - Map-Fu

A local group here at Portland State University has just announced a new mapping interface into the mix. Check out the live demos and download the code. Looks to be a great resource! Thanks guys…

 We are delighted to announce a new open source framework for web-mapping, your personal Ninja of web-mapping, ladies and gentlemen, it's:

 *Map-Fu*

 Available for download, contribution of code, or reporting of bugs at our not-so-secret location on sourceforge: http://sourceforge.net/projects/map-fu/

 It features a true object-oriented PHP-Mapscript backend, with a variety
f classes and interfaces, ease of extensibility, and other
onfiguration zoink-zoink.

 On the front end is a fat Javascript client, using XMLHttpRequest to communicate with the server for updating the map and map-related data. It employs JSON for messaging and goes for a Web 2.0 feel. Some features on the front-end include pop-up tabs for reference map, legend, map information and query results. We try to maximize screen area for the map, since that's what we are interested in visually!

 Based on Minnesota Mapserver (of course) and PostGIS, we developed this interface to satisfy actual needs of clients for creating web-mapping applications that served SPECIFIC needs and required SPECIFIC tools.

 Some production sites that are using the Map-Fu or related codebase (formerly known as YAMI (Yet Another Map Interface)):

 http://glaciers.us - A database of glacier change in the Western US, including a linked assets database of aerial and oblique photos from the last century

 http://www.oregongeology.com/sub/ogdc/index.htm - The most up-to-date geology compilation for Oregon, soon to be used for other states!

 http://oscdl.research.pdx.edu/ - Oregon Sustainable
ommunities Digital Library, a temporal database of regional planning for the Portland Metro area (ten years of regional planning data, plus links to documents tied to spatial objects)

 We look forward to collaborating with a larger group of developers, and receiving feedback on our efforts! We're interested in incorporating the OpenLayers interface, and "through the web" feature editing via WFS-T.

 In the current vacuum of viable enterprise GIS solutions, we see this as a ripe time for rapid development!

 The Map-Fu development team,
Morgan, Cris, Tim, Percy & Will
Portland State University

WISER Commons - Seattle Dec.1st

I had the pleasure of attending a meeting on the WISER commons last Friday (December 1st) in Seattle Washington. It was a great meeting bringing together environmentally minded individuals and organizations that have a common “technology” thread. The event was sponsored by the Interra Project and the Natural Capital Institute. Paul Hawken spoke about the need and relevance of a “commons” and promoted a new project called WISER. The demo shown was an impressive database of socially responsible organizations around the world. I am excited to see this project grow as it is aiming to socially connect the environmental movement.

I am interested to tear into their code as the software being developed is Open Source and should be interesting. They are due to put out a public release in January!

WISER

AUDIO

Jon Ramer - Overview of the Day

Paul Hawken - WISER

WISER Earth Overview

WISER Business Overview

WISER Wrapup

Cecile Hansen - Duamish Tribe - Grounding on tribal issues and relevance to the community

ALL AUDIO (ZIP FORMAT - 40 Megs)

Adding SESSION Based Data Store for Chameleon Based Apps.

I have had a great need for a directory structure like the following in my Chameleon based apps:

SESSION_DIR | —>data | —>base_data (Base data shared with all apps on file server) | —>app_data (Application specific data residing on local server) | —>dyn_data (User specific dynamically generated layers)

The way I have tackeled this is to create a new directory in the session space of the Chameleon app and create symbolic links for the base and application data to common data storage areas on my file sservers. Lastly a new directory is created in that session data directory for dynamically created data. Pretty basic, but many questions have been asked to me about this, so here is an example.

index.phtml

// Make sure we have a data dir that is session based: // sessionSavePath/data/base_data -> symbolic link to base data dir (shared) // sessionSavePath/data/app_data -> application specific data (shared) // sessionSavePath/data/dyn_data -> user specific dynamic data (not shared) // If the directory does not exist, then we need to make one. $data_dir = getSessionSavePath()."/data"; $data_base_dir = $data_dir."/base_data"; $data_app_dir = $data_dir."/app_data"; $data_dyn_dir = $data_dir."/dyn_data"; //save the current application working directory $cwd = getcwd(); if (!file_exists($data_dir)) { // Here we make the session data dir $dir_exec = sprintf("mkdir ".$data_dir); exec ($dir_exec,$arr,$err1); $_SESSION['sessDataDir'] = $data_dir; // Here we make the user dynamic data dir $dir_exec = sprintf("mkdir ".$data_dyn_dir); exec ($dir_exec,$arr,$err1); // Here we make the base data link $dir_exec = sprintf("ln -s ". ``$cwd."/../../base_data ".$data_base_dir); exec ($dir_exec,$arr,$err1); // Here we make the app data link $dir_exec = sprintf("ln -s ". $cwd."/../app_data ".$data_app_dir); exec ($dir_exec,$arr,$err1); } // Finally we modify the data path of our map object $oMap = $oApp->moMapSession->getMapObj(); $oMap->set("shapepath", $data_dir);


mapfile.map

# For base data items DATA Political/counties.shp becomes... DATA base_data/Political/counties.shp```# For app specific data DATA Marinezones/contiguous_us_eez.shp becomes... DATA app_data/Marinezones/contiguous_us_eez.shp``` # For dynamic data Most apps will just create a layer dynamically in Mapscript and point the data statement toward the dyn_data directory.“

That is it. Pretty basic, but allows you to keep your data separated between base data all apps will use, application specific data, and data that is generated dynamically by users on the fly.

Web-GIS on the Cheap…

OK, I have servers at work that I use daily to develop Mapserver/GDAL/OGR/GRASS/GMT/etc… based apps, but how about on a shared hosting environment?

Well, I finally got it going. I have written up my install instructions for Mapserver/GDAL/OGR/Proj/Postgres/Postgis/Geos/GMT/GRASS on Dreamhost, a debian based shared hosting service. The great thing about it…

1) It cost $9.95/month (1 year contract) *12 = $119.40

2) You can use a discount code to get $97 off… Total cost at sign-up = $119.40-$97 = $22.40

UPDATE (12/09/06): I just created a propmo code that gives the FULL discount to you… Nothing to me.  It is ZPULLEYFULL , enjoy!

3) Add a domain for $9.95 and the first year of this site cost $32.35 … WOW

With this package I get 200 Gigs of space (grows weekely!) and 1 Terabyte of bandwidth/month (grows weekly!).

So what good is it if I cant do some mapping work with it? Well, I have posted notes how I was able to get a fully functional Mapserver/PostGIS environment up. I went as far as to get command line GRASS installed to do geo-processing sans the GUI. GMT installed like a breeze, and bammmm… a GIS work environment.

Cant beat the rent ;-)

Check out some demo’s running on the server:

1) ka-map

2) GMT

pretzel:~/usr/local/src/gmt/GMT4.1.2/examples> ./do_examples.csh Doing example 01…done Doing example 02…done Doing example 03…done Doing example 04…done Doing example 05…done Doing example 06…done Doing example 07…done Doing example 08…done Doing example 09…done Doing example 10…done Doing example 11…done Doing example 12…done Doing example 13…done Doing example 14…done Doing example 15…done Doing example 16…done Doing example 17…done Doing example 18…done Doing example 19…done Doing example 20…done Doing example 21…done Doing example 22…done Doing example 23…done Doing example 24…done Doing example 25…done Completed all examples pretzel:~/usr/local/src/gmt/GMT4.1.2/examples>

Check out the Output Images

3) GRASS

IMPORT ——>

GRASS 6.1.cvs > r.in.gdal input=world-topo-bathy-97_32_84_24.tif output=bmng_grass location=blue_marble A datum name wgs84 (WGS_1984) was specified without transformation parameters. Note that the GRASS default for wgs84 is towgs84=0.000,0.000,0.000. 100% CREATING SUPPORT FILES FOR bmng_grass.red SETTING GREY COLOR TABLE FOR bmng_grass.red (8bit, full range) 100% CREATING SUPPORT FILES FOR bmng_grass.green SETTING GREY COLOR TABLE FOR bmng_grass.green (8bit, full range) 100% CREATING SUPPORT FILES FOR bmng_grass.blue SETTING GREY COLOR TABLE FOR bmng_grass.blue (8bit, full range) r.in.gdal complete. Mapset in Location GRASS 6.1.cvs>

VERIFY ——->

`Welcome to GRASS 6.1.cvs (2006) GRASS homepage: http://grass.itc.it/ This version running thru: TC Shell (/usr/bin/tcsh) Help is available with the command: g.manual -i See the licence terms with: g.version -c Start the graphical user interface with: gis.m & When ready to quit enter: exit

Mapset in Location GRASS 6.1.cvs > g.list type=rast

raster files available in mapset PERMANENT: bmng_grass.blue bmng_grass.green bmng_grass.red`

---------------------------------------------- Mapset in Location GRASS 6.1.cvs>

Thats it for now… Up and running!!!!!!