Joi Ito – De wereld redden door iedereen in staat te stellen om te innoveren

In code we trust — Vertrouwen in de overheid, bureaucratie en technologie

Boeiende vinger aan de pols in open overheid Amerika met Noel Hidalgo (New York), Dmitry Kachaev (Washington D.C.) en Alissa Black (San Francisco).

Share photos on twitter with Twitpic

Allissa Black (erg tof!) geeft een overzicht van de verschillende initiatieven die de stad San Francisco (met Twitter-burgermeester Gavin Newsom) heeft genomen om open overheid te bevorderen. Misschien een goed idee om als nieuwe burgermeester van Amsterdam ook iemand te kiezen die tenminste snapt wat internet is.

San Francisco loopt uiteraard buitengewoon voorop in dit soort dingen —noblesse oblige. Ze hebben een data-inventaris en -richtlijn aangenomen en er wordt elk kwartaal een verslag uitgebracht van de stand van zaken. Ze maken sites zoals: DataSF, RecoverySF en een Citypedia om kennis te delen binnen de stad.

Haar stappen die je moet nemen:

  1. Stel een team aan om het initiatief te doen groeien
  2. Breng richtlijnen uit
  3. Zorg dat het een verwachting van de overheid is.
  4. Voer beleid door.

Ook nog op de vraag welke software men gebruikt om participatie van burgers te bevorderen het antwoord: Uservoice en IdeaScale.

En de tip om te participeren in de O’Reilly online conferentie voor Gov 2.0 International.

In Amerika zijn heel veel initiatieven op allerlei niveau’s: stad, staat, federaal die hiermee bezig zijn en er lijkt heel veel ‘web literacy’ (mediawijsheid) te zijn en ook budget voor al dit soort dingen. Toch moet ik gevoelsmatig zeggen dat we in Nederland nauwelijks achterlopen.

Op overheidsniveau hebben we Ambtenaar 2.0, Hack de Overheid, en nog een serie initiatieven (ik wacht nog op data.gov.nl). In Amsterdam zouden we bijvoorbeeld het Open City manifest kunnen aannemen maar iets als Amsterdam Opent is al heel tof.

Waar het in Nederland beter kan:
1. Duurzame web-platformen die gebouwd zijn door bedrijven die het snappen op open technologie met een blik vooruit op (ipv één keer oplevern en iets onbruikbaars over de schutting gooien).
2. Vaste, aanspreekbare teams die de materie beheersen aanstellen voor deze onderwerpen.

(Deze blog is snel geschreven door Alper na een sessie op SxSWi in Austin, Texas. En tevens gecrosspost naar het groepsblog voor alle Nederlandse aanwezigen.)

Sea fare

Just saw this picture of the Wellington RFID farecard system at Adam Greenfield’s Flickr stream (CC-by-nc-sa photograph):
Notxtian

It’s called a Snapper card.

Compare this to the London based Oyster card:

And the Hong Kong Octopus card:

This international sea food theme makes me think that we have definitely missed a branding opportunity here (and this for a country of fishermen). Our entire OV-chipkaart system1 has been grossly underdesigned on all fronts, so no surprises there2.

So I’ve got two proposed alternative names for our low countries farecard system:

  • Herring card (Haringkaart)
  • or

  • Mussel card (Mosselkaart)

How do we get this change implemented? And anybody care to mockup a concept?

  1. How stupid is it to put the implementation detail of the ‘chip’ in the name? []
  2. You currently have the messages in the tram: “Don’t forget to check out with your public transport chip card.” These are a bit awkward. []

Municipal boundaries of the Netherlands

Goal

I want to create a simple visualization tool for Processing so I can input a set of values for each Dutch municipality and then color a map based on those values.

This is harder than it seems because there is no convenient source for the cartographic data for the boundaries of the Dutch municipalities. So the first step is to acquire those boundaries.

OSM

This blogpost in Dutch put me on track for this dataset. OpenStreetMap has a pretty complete picture of the Netherlands and they track municipal boundaries under boundary admin_level=8.

The data dump contains all administrative boundaries on several levels and is something of a mess. The informationfreeway link on the blogpost which should generate an OSM file with only the relations with admin_level=8 but that specific API seems to be down. Also the approach of importing the OSM file back into a PostGIS database before rendering anything struck me as somewhat too cumbersome. So an alternative approach was called for.

There are some readily available dumps at CloudMade both with OSM files (format) and Shapefiles for these administrative boundaries. That seemed to be a useful starting point.

An OSM file is just an XML file with series of nodes, ways and relations in it. It is filterable by the generic processing tool Osmosis with the options that I guessed --way-key-value to filter ways with the admin_level tag and --node-key-value to do the same for nodes. Osmosis does not specify anything for relations which I want to preserve to be able to identify each boundary by the name of the municipality.

Having done that, the resulting OSM file needed to be drawn to the screen. I made a simple XML reader in Processing to display the resulting boundaries. The result did not seem to be completely what I wanted both with missing and unlinked geographical features and I think not everything properly labelled. For this particular application a wiki-map does not seem like the most suitable source of data.

CBS

CBS (the Dutch statistics office) also provides a dataset with administrative boundaries of the Netherlands. It is a bit hard to track down on the site and there’s a reference to the Kadaster which isn’t entirely clear, but the generalized Shapefile is workable.

One problem is that Shapefiles are only understood properly by GIS people and there are hardly any libraries for web developers to work with the data format. Sunlight Labs recently released their ClearMaps library to aid developers wanting to work with Shapefiles, which is a big step in the right direction.

Another problem is that the file on the CBS site is from 2006 and that several municipalities have merged/split, so that adds some problems for correlating it to data. And come to think of it, this municipal rejiggering makes any historical data view of the Netherlands a daunting task. Somebody on Wikipedia has generated a similar map of the Netherlands for 2010 supposedly using data from the CBS, but I can’t find that dataset on the site1.

Oddly enough there’s also nothing readily available to draw Shapefiles in Processing. Perusing the forum yields this post which points to Geotools which is a massive set of Java libraries consisting mostly of a huge dependency nightmare mitigated somewhat by Eclipse and Maven.

Geographical data

Viewing the Shapefile in qGIS shows that it does indeed contain the municipal boundaries with correct labeling. Having verified that, we need to extract the geographical data from the file into a format for easier reuse. Linking all the Geotools2 dependencies to my Processing sketch does not seem like an attractive proposition. Using the Geotools quickstart to setup Eclipse to pull in the libraries and run the Java code, did work pretty conveniently.

Poking around the Shapefile with Java and using the very poor javadocs (the User Guide’s usefulness turned out to be extremely limited) and sources posted online that are available of Geotools yielded something worthwhile after a full day’s work. I also found lots of forum posts of very confused people with few replies and little insight to be gleaned from them. This really seems to be an underdeveloped field.

It turns out the Shapefile read with Geotools contains SimpleFeature classes (UML for those, and the Wikipedia lemma for the OpenGIS standard) of which you can call the getDefaultGeometry() methods.

Geotools also provides a default Drawer.java which you can use to display the features (via LiteShapes) in the Shapefile using Java AWT Graphics. This turned out to be useful mainly for debugging purposes and to verify that Geotools does indeed properly read in the Shapefile. Using a GeomCollectionIterator to walk through the points and extract the coordinates that way turned out to be a dead end (especially because I didn’t get the role of the various Transforms).

Another idea was to generate SVG from the Shapefile but the GenerateSVG class did not seem to be included in my library checkout and fiddling with the maven file seemed risky.

Finally the following piece of code yielded for me the two pieces of data I was looking for, the names of the municipalities and the content of the SimpleFeatures as MULTIPOLYGONs.


  String gemShapefile = "/Users/alper/Documents/projects/muniboundaries/cbs/buurt_2008_gen2/gem_2008_gn2.shp";
  File file = new File(gemShapefile);

  FileDataStore store = FileDataStoreFinder.getDataStore(file);
  FeatureSource featureSource = store.getFeatureSource();

  FeatureCollection features = featureSource.getFeatures();
  FeatureIterator iter = features.features();

  int counter = 0;

  PrintWriter pw = new PrintWriter(new FileWriter("/tmp/geo.txt"));

  while(iter.hasNext()) {
  	SimpleFeature feature = iter.next();

  	Collection props = feature.getProperties();

  	if (counter > 0) {
  		String gemNaam = "";
  		String geoWKT = "";

    	for (Iterator it = props.iterator(); it.hasNext();) {
		Property property = it.next();

		if (property.getName().getLocalPart().equals("the_geom")) {
			geoWKT = property.getValue().toString();
		}

		if (property.getName().getLocalPart().equals("GM_NAAM")) {
			gemNaam = property.getValue().toString();
		}
	}

    	pw.println(gemNaam + "; " + geoWKT);

    	System.out.println(gemNaam);
  	}

  	counter++;
  }

  pw.close();

The funny thing is every feature has a property “the_geom” which contains the geometry data and its toString() method yields the geometry data as Well-known text. That turned out to be all we needed.

It turns out the coordinates in the Shapefile are in Rijksdriehoekscoördinaten3 which are cartesian coordinates based on a custom projection and associated rectangular grid for the Netherlands4. This is easily verified using this web form to convert a pair back to GPS and looking that up in Google Maps5.

The above code produces lines such as:
Leek; MULTIPOLYGON ( ( (224599.999985 582499.999985, 224999.999985 581299.999985, […] 223366.621185 581866.621185, 223499.999985 581999.999985, 224440.97068499998 582470.485385, 224499.999985 582499.999985, 224599.999985 582499.999985)))

This is a simple list of coordinates that define the boundaries of the polygons. A MULTIPOLYGON contains one or more POLYGONS. A POLYGON is one list of the boundary with zero or more lists defining any holes within that boundary. I figured that out looking at the specification for GeoJSON (same data model, different markup) which is the format I am going to republish this information in.

Drawing

With these coordinates, it became quite easy to write a Processing sketch to draw these boundaries. I looked up a datasource for the last European elections and hooked that up for the colors.

Results of the 2009 elections for European Parliament

Making iterative sketches in Processing with Eclipse is somewhat cumbersome because you need to utilize quite a high level of abstraction if you don’t want your classes to interfere with each other but still Eclipse allows me to work quickly and lets you write Java 1.5 level code against the Processing core.jar (that alone is worth the effort).

I’m going to release a generic Processing sketch where you only need to add a data file with colors or values for each name. Publication as these boundaries as both GeoJSON and SVG is also forthcoming. I’m also looking for the more recent 2010 Shapefile from the CBS with all the current municipal boundaries in it. If there’s demand I can also extract the living quarter and neighborhood level administrative boundaries which are in the other Shapefiles.

Update: Some research shows there’s a very promising avenue to do this stuff by converting the entire Shapefile to GeoJSON as explained in this StackOverflow post and then drawing thath using either ProcessingJS or OpenLayers.

Update: Managed to convert the data to GeoJSON and draw it using ProcessingJS:
Processing the Netherlands

This opens up a ton of possibilities for interactive visualization and sharing. More to follow.

  1. Nor can I find anything else there, but that is a different story. []
  2. Another alternative would have been a Python binding to GDAL/OGR which looked even less tractable. []
  3. Seemingly you can put anything you want in a Shapefile also given the vast diversity in geodetic datums which are in use around the globe. []
  4. This is something I couldn’t figure out anywhere, what the agreement was —if any— for the contents of the coordinates in the Shapefile. My question: “How do I get GPS coordinates from a Shapefile?” did not yield any answers. []
  5. I have the formulas in a dense PDF, but some sample Java code to do the conversion would be very nice. []

Verkiezingsuitslagen Grootste Partijen Gevisualiseerd

Snel een visualisatie in elkaar gedraaid op basis van mijn Europees Parlement visualisatie van vorige week. De huidige verkiezingen voor de gemeenteraad 2010 (klik voor groot):

Grootste landelijke partijen per gemeente genomen waar mogelijk1. Sommige gemeenten doen nu niet mee, zie Wikipedia voor het lijstje en van 22 gemeenten moet de uitslag nog komen.

De kaart met de grootste partijen van de vorige verkiezingen (voor het Europees Parlement in 2009):

Het is lastig vergelijken met de Europese verkiezingen omdat dat een heel ander soort verkiezingen is met een nog lagere opkomst (en zichtbaar meer winst voor het CDA). Wilders deed bij die verkiezingen op een stuk meer plaatsen mee en dat is duidelijk zichtbaar. Je ziet dat de PVV nu vervangen is door de VVD, maar als Wilders in al die gemeenten wel meedeed, had het heel heel anders af kunnen lopen.

Beide plaatjes mogen overgenomen worden onder een Creative Commons Naamsvermeldingslicentie voor Alper Cugun en een link naar http://alper.nl.

Stuur dit door op Twitter!

Update om 02:00. Volgende en laatste update morgenochtend.

Update: Bezig met de laatste ronde invoer en het is zelfs nog wachten op enkele laatste uitslagen die niet op teletekst staan. Daarna misschien ook de gegevens van de vorige gemeenteraadsverkiezingen overnemen omdat dat beter vergelijkt dan de Europese verkiezingen.

Update: Nog steeds aan het wachten op de uitslagen van Geldrop-Mierlo en Lelystad.

Update: Laatste verlate uitslagen ook verwerkt.

Update: NRC heeft ook een verkiezingskaart die er leuk uitziet maar hier en daar wat lastig werkt.

  1. Sommige gemeenten hebben niet eens een landelijke partij in het lijstje staan. Die blijven dan wit. []

Toename in veiligheid door de ov-chipkaart

De OV-chipkaart is een groot succes in de Amsterdamse metro. Het aantal zwartrijders is afgenomen en navenant ook het aantal geweldsincidenten.

Mooi en nog meer onbegrip voor de mensen die tegen de ov-chipkaart zijn. Hij mag nog wel verbeterd worden, maar de waarde van de chipkaart is nu duidelijk bewezen.

De GVB zegt in de pers dat het niet mogelijk is om de harde kern van zwartrijders aan te pakken. Ik denk meer dat het een kwestie is van niet willen of dat de kosten niet opwegen tegen de baten. Het is de vraag in hoeverre je de kieren dicht van een veiligheidssysteem.

Ik post dit even hier omdat de GVB een van de meest gesloten en niet web-savvy bedrijven van Nederland is, dus voor de lezers zonder enige hoop van wederhoor.

1.

Wat mij een paar keer is gebeurd is dat er een marginaal iemand vlak achter je mee door de poortjes glipt. Ik ben meestal te in gedachten verzonken met muziek op om het snel op te merken, maar de mensen van het GVB die bij die poortjes staan DOEN NIKS. Wat hebben ze dan voor zin? En wat kan ik er dan van zeggen als de mensen van het GVB het goed vinden wat er gebeurt?

2.

Evenzo mensen die poortjes intrappen: doorseinen via beveiligingscamera’s, metro waar ze in zitten subtiel vertraging laten oplopen en ze door politie op het volgende station uit de metro laten trekken, onder curatele stellen en dwingen schade te vergoeden.

Het kan wél als je het maar wilt.