14.08.2014

MAPresso classification with d3.js

This test for the MAPresso classification scheme in a d3.js context is based on a blogpost by Gabriel Florit (Dec. 14, 2011, "Choropleth classification systems"). He compared different classification schemes, I extended it by the unclassed scheme typical for MAPresso. The MAPresso specific code is just to show the feasibility of the concept. There is one additional URL parameter: zfact: the two class boundaries were calculated as

  • zbot = (mean - (zfact * standard deviation)  
  • ztop = (mean + (zfact * standard deviation) 

The legend is a first attempt, there is no solution for cases with zbot < zmin or ztop > zmax. In a more elaborated version there will be a bipolar color scheme (using a parameter zmed).

Here the test:

10.06.2012

Processing.js and Sencha Touch


(just for documentation purpose, here an older experiment, result at http://mapresso.com/test/pjs_touch/AH1))

I made the following hacks:

1. In the app.js I added a function, which loads the processing-1.3.6.js only at the end of the launch function:

    loadProcessingJs: function (filename) {
   var fileref=document.createElement('script')
   fileref.setAttribute("type","text/javascript")
   fileref.setAttribute("src", filename)
   document.getElementsByTagName("head")[0].appendChild(fileref)
},

    launch: function() {
        // Destroy the #appLoadingIndicator element
        Ext.fly('appLoadingIndicator').destroy();

        // Initialize the main view
        Ext.Viewport.add(Ext.create('AH1.view.Main'));
        this.loadProcessingJs("processing-1.3.6.js");

    },

2. In the app/view/Main.js I added the canvas inside the html item:

                html: [
                    "You've just generated a new Sencha Touch 2 project. What you're looking at right now is the ",
                    "contents of <a target='_blank' href=\"app/view/Main.js\">app/view/Main.js</a> - edit that file ",
                    "and refresh to change what's rendered here.<br /><br />",
                    '<h3>HelloWorld of Processing.js:</h3>',
                    '<canvas data-processing-sources="circle.pde"></canvas>'
                ].join("")


3. circle.pde contains the ProcessingJS code;

4. And the worst change: I added one line ("init();") totally at the bottom of (non minified version) processing-1.3.6.js (because otherwise the init()-function never executes in my hack):

...
  Processing.loadSketchFromSources = loadSketchFromSources;
  Processing.disableInit = function() {
    if (isDOMPresent) document.removeEventListener("DOMContentLoaded", init, false)
  };
  if (isDOMPresent) {
    window["Processing"] = Processing;
    document.addEventListener("DOMContentLoaded", init, false)
  } else this.Processing = Processing;
  init();
})(window, window.document, Math);

For the minimized version (e.g. in processing-1.4.1.min.js the very end must be


...else{this.Processing=F;}I()})(window,window.document,Math);
instead of 
...else{this.Processing=F;}})(window,window.document,Math);

___

I don't know what I want to do with this experience. I like Processing and perhaps I'll someday make something with Sencha Touch and Processing.js ...

22.11.2011

19.10.2011

Adobe-Ausstellung: Turning Data into Meaning

Nach einem längeren Intro kann man in der Ausstellung "InForm :: Turning Data into Meaning" im virtuellen Adobe-Museum verschiedene Beispiele für die visuelle Umsetzung von Daten (SMS, Twitter, Wikipedia u.a.). Hier ein Beispiel aus einem Film über den SMS-Versand an einem Jahreswechsel:


08.10.2011

Kartogramme etc.

Symposium Latsis EPFL 2011: MiniMax Mapping Contest.
Die kleinen Videos anschauen!


Rankin: Punktkarten Ethnien in Chicago - Girarding: Touristenwege in Paris und Barcelona aufgrund von Flickr - Beauchesne: Globale Karten mit Verbindungslinien aufgrund wissenschaftlicher Zusammenarbeit - Cruz: Verkehsaufkommen in Lissabon als Adern - Guillemot: Kartogramme der langfristigen Bevölkerungsentwicklung in der Schweiz - Lehmann: Stimmung aufgrund von Twitternachrichten auf Kartogrammbasis (USA).

11.07.2011

Animations of London cycle hire

Watch a map-based transit animations of London cycle hire journeys over the course of 4 October 2010, a day when there was a tube strike. Bikes are represented as tadpoles. Fixed circles represent hire stands, which flash when a bike leaves or arrives.

London Hire Bikes animation from Sociable Physics on Vimeo.


Der ganze Artikel ("Has London's cycle hire scheme been a capital idea?") diskutiert das neue Velovermietsystem in London.

30.06.2011

DataMaps.eu

Von der Idee her mit MAPresso verwandt:
"DataMaps.eu bietet Ihnen ein kostenloses Visualisierungswerkzeug, mit dem Sie ortsbezogene Daten z.B. aus schwer verständlichen Tabellen ohne Programmieraufwand in ansprechende, leicht verständliche Visualisierungen umwandeln können:

(...)
Die Stadt München hat im Rahmen ihres MOGDy-Prozesses (»Munich Open Government Day«) Ende Jänner 2011 begonnen, statistische Daten der Verwaltung maschinenlesbar zur Verfügung zu stellen. Darunter sind z.B. Daten zu den Einwohnerzahlen der 25 Stadtbezirke oder wieviele KFZ mit welchem Hubraum pro Stadtbezirk angemeldet sind.Thomas Pfeiffer von Webevangelisten.de hat in diesem Zusammenhang eineApplikation programmiert, welche die einfache Erstellung von Datenlandkarten von München ermöglicht. Den Quellcode dafür hat er dankenswerterweise als OpenSource-Software zum Download zur Verfügung gestellt."

13.06.2011

Kernel Density Estimation

KDE interaktiv und sehr effizient:

Ove Daae Lampe, Helwig Hauser: "Interactive Visualization of Streaming Data with Kernel Density Estimation", Proceedings of the IEEE Pacific Visualization Symposium (PacificVis 2011), 2011
(als PDF und ergänzendes Video)

"In this paper, we discuss the extension and integration of the statistical concept of Kernel Density Estimation (KDE) in a scatterplot-like visualization for dynamic data at interactive rates. We present a line kernel for representing streaming data, we discuss how the concept of KDE can be adapted to enable a continuous representation of the distribution of a dependent variable of a 2D domain. We propose to automatically adapt the kernel bandwith of KDE to the viewport settings, in an interactive visualization environment that allows zooming and panning. We also present a GPU-based realization of KDE that leads to interactive frame rates, even for comparably large datasets. Finally, we demonstrate the usefulness of our approach in the context of three application scenarios -- one studying streaming ship traffic data, another one from the oil and gas domain, where process data from the operation of an oil rig is streaming in to an on-shore operational center, and a third one studying commercial air traffic in the US spanning 1987 to 2008."

Speziell interessant auch die Visualisierung der Schiffsbewegungen (im Video ca. ab 02:12):


11.06.2011

Eric Fischer: The Geotagger'sWorld Atlas u.a.

Eric Fischer kombiniert die Fotos mit Geotag mit OpenStreetMap. In einem Projekt unterscheidet auch gleich noch die Fotos von Touristen (rot) und Einheimischen (blau) - gelbe können beides sein.  Unter den 135 Städten ist auch Zürich:


Census-Daten (Race and ethnicity) zeigt z.B. diese Karte von New York:




09.06.2011

Züriplan

Die "Konkurrenz" schläft nicht: die Stadt Zürich bringt ihren Stadtplan (samt historischer Karten und Fussgänger-/Veloroutenplaner u.v.a.m.) auf iPhone und iPad:


08.06.2011

Eyeo Data Visualization Challenge: Ghost Counties

 Jan Willem Tulp wins Eyeo Data Visualization Challenge
 

The visualization depicts the number of homes and vacant homes for all the counties for each state. The size of the outer bubble represents the total number of homes, the size of the inner bubble represents the number of vacant homes. The y-axis shows the population size (on a logarithmic scale) and the x-axis of the bubbels shows the number of vacant homes per population. Each bubble is also connected with a line to another axis: the population / home ratio. On the top right you can see some exact numbers for this data.

Built with Processing

07.06.2011

OneBayArea: Reisezeiten und Hauspreise

Wohnungs/Haus-Suche abhängig von gewünschter maximal Reisezeit, Verkehrsmittel, Tageszeit und maximalem Hauspreis.
Vielleicht auch für Bürosuche geeignet - allerdings noch nicht für Zürich...



mehr Beispiele auf Stamen blog.

01.06.2011

Mapnificent

Irgend einen Punkt in einer der verfügbaren Städte markieren und sehen, wohin man in der gewünschten Zeit kommt.




Richtig gut wird das ganze, wenn man mehrere Punkte auf die Karte zieht und schaut, wo sich die einzelnen Gebiete überschneiden:

Beispiel: alle hellen Gebiete sind von beiden Punkten aus in 15 Minuten mit öffentlichen Verkehrsmitteln erreichbar.

mit API-Dokumentation

Mapnificent shows you the area you can reach with public transport from any point in a given time. It is available for major cities in the US and world wide.
Mapnificent was originally inspired by MySociety's Mapumental which is sadly still in private beta.
Mapnificent was created by StefanWehrmeyer.

24.05.2011

maps.google.com auf mobilen Geräten

Auch Google arbeitet an den Kartenangeboten auf mobilen Browsern:


«With 40% of Google Maps usage on mobile devices, we want you to have a consistent Google Maps experience wherever you use it. So, today we’re announcing our updated Google Maps experience for mobile browsers on Android and iOS.

Now, when you visit maps.google.com on your phone or tablet’s browser and opt-in to share your location, you can use many of the same Google Maps features you’re used to from the desktop. This will allow you to:
  • See your current location
  • Search for what’s nearby with suggest and auto complete
  • Have clickable icons of popular businesses and transit stations
  • Get driving, transit, biking, and walking directions
  • Turn on satellite, transit, traffic, biking, and other layers
  • View Place pages with photos, ratings, hours, and more
  • When signed into your Google account, access your starred locations and My Maps 
(...)»

mobile.map.geo.admin.ch

swisstopo:

«mobile.map.geo.admin.ch, die BETA Version des Kartenviewer für Mobilgeräte des Geoportal des Bundes ist jetzt online.
Unter dem Begriff «Mobile» wird im Umfeld von geo.admin.ch RE2 eine für Webbrowser von mobilen Endgeräten (Smartphones) Version von geo.admin.ch verstanden. Nach der Durchführung des Codesprints im Februar 2011 steht nun eine BETA Version für den Kartenviewer mit limitiertem Funktionsumanfang zur Verfügung.
Über die BETA mobile.map.geo.admin.ch können über Mobilegeräte mit Android  oder iOS (Apple) Betriebssystemen und Standard Webbrowser folgende Funktion genutzt werden:
-       Darstellung der Landeskarte unter verschiedenen Massstäben (Zoom-in / Zoom-out),
-       Verschieben (Pan) der Karte über Interaktion mit Touchscreen
-       Zentrieren der Landeskarten auf die momentane Position (Geolocation) und Anzeigen des Gemeinde, in der sich der Nutzer befindet
-       Informationspanel mit
- Feedbackmöglichkeit, um Fehlfunktionen oder Korrekturmeldungen zu übermitteln
- Link zu Vorschau / Wireframe über Funktionsumfang der ersten Vollversion
- Link zu www.geo.admin.ch, dem Geoportal Bund
Diese BETA Version soll erlauben, die wichtigsten Funktionen einem von geo.admin.ch schon zur Verfügung zu stellen und Feedback zu erhalten. Die mobile Version des Portals ist ebenfalls in Bearbeitung und wir sind zuversichtlich, dass RE2 im September 2011 aufgeschaltet werden kann.»



21.05.2011

Dave Bollinger


Dave Bollinger: "I enjoy tinkering with various procedural, generative and algorithmic designs". Faszinierend und extrem vielseitig,



11.05.2011

Buch-Tipp


Und noch ein Buch-Tipp:
Ecological Urbanism, herausgegeben von Lars Müller Publishers

Nicht nur wunderschön (und wie alle bücher wohlriechend) sondern auch noch interessant, vielseiteig und spannend zu lesen.

Buch-Tipp

Geologics by Vincent Guallart

Look inside:
http://issuu.com/actar/docs/geologics

07.04.2011

And then there was Cartagr.am (bloom blog)

Geht leider nicht um Kartogramme aber doch um Karten, konkret um die Visualisierung von Instagram-Fotos. Interessant, dass da eine weitere JavaScript-Kartographie-Bibliothek auftaucht:

"Technology: Cartagr.am was written using ModestMap.js for the tile mapping and SimpleGeo for the location services and the labels are the Acetate labels from FortiusOne and Stamen."


Leider ist die Doku noch nicht allzu ausgebaut. Es hat aber einige Beispiele:
Beispiele




greatcircle


hurricane

05.04.2011

US-Census-Daten aufgrund von Länge/Breite oder ZIP-Code

Wenn wir noch eine Volkszählung hätten, wäre eine solche API eine Möglichkeit, sie für die Verwendung von Mashups anzubieten (infochimps.com hat übrigens noch eine ganze Reihe weiterer APIs).

Geographic: latitude, longitude, city, area code, zip code, metro code, region code, country code

Ethnic: percent hispanic, percent asian, percent pacific, percent white, percent black, percent native

Age: percent under 5, percent under 18, percent over 65

Population:  total, people per household, households, housing units

Demographic: percent female, percent semi permanent, percent bs graduate, percent below poverty, work travel time – in minutes, percent hs graduate, percent non english, percent foreign

Economic: household income – median, per capita income, housing unit value, percent homeownership


Beispiel
Mit dem Input (in diesem Beispiel mit der ZIP-Code)
http://api.infochimps.com/web/an/census/combined?zip=78701&apikey=api_test-W1cipwpcdu9Cbd9pmm8D4Cjc469

ergibt sich folgender Ouput:
{"household_income":35757.0,"percent_hispanic":0.15,"percent_semi_permanent":0.27,"percent_asian":0.04,"percent_under_18":0.04,"zip":78701,"percent_bs_graduate":0.14,"per_capita_income":37485,"percent_below_poverty":0.3,"work_travel_time":6.67,"housing_unit_value":212900,"percent_homeownership":0.38,"housing_units":2002,"people_per_household":1.54,"percent_dual_race":0.05,"percent_pacific":0.01,"percent_white":0.73,"population":3780,"percent_hs_graduate":0.14,"percent_non_english":0.26,"percent_foreign":0.12,"percent_black":0.1,"percent_over_65":0.12,"households":1707,"percent_under_5":0.02,"percent_native":0.02,"percent_female":0.37} 

22.03.2011

Ist die Schweiz zu klein, ein Atom-Land zu sein?

Gebiete, die nicht weiter als 30/50Km von einem AKW entfernt sind, wurden auf dieser Karte der Bevölkerungsdichte eingefärbt.
Aber für Notfälle haben wir ja noch das Reduit....

17.03.2011

Kartogramme

Eine Vielzahl von Kartogrammen bringt der Blog "Views of the World" von Benjamin D. Hennig (University of Sheffield). Ein aktuelles Beispiel: Die Visualisierung der von Erdbeben bedrohten Personen; Blog: People at Risk: Visualising Global Earthquake Intensity. Hier ein gleich ein Auszug:

The following map shows a more general approach of mapping the risk of earthquakes. It is a visualisation of all major earthquakes that have been complied in the Global Significant Earthquake Database. The database created by NOAA’s National Geophysical Data Centercontains information on destructive earthquakes from 2150 B.C. to the present that meet at least one of the following criteria: Moderate damage (approximately $1 million or more), 10 or more deaths, Magnitude 7.5 or greater, Modified Mercalli Intensity X or greater, or the earthquake generated a tsunami“.

Following an approach of spatial-analyst.net, a kernel density has been calculated from these records to visualise the areas most at risk of earthquakes during that time period. In a last step, I have transformed the world earthquake intensity map (see map inset) using a density equalising cartogram algorithm applied to a population grid. Simply said, the resulting map gives each person living on earth the same amount of space while also preserving the geographical reference. This map allows to understand the earthquake intensity in relation to today’s population distribution, and thus gives an idea of where most people are of risk related to seismic activity:


Paying some tribute to the most recent events in Japan, here is a new population cartogram of the country which is created from a more detailed population grid than the original map from our World Population Atlas. The cartogram shows the shape a very densely populated country and helps to understand, where the majority of Japan’s population is concentrated: “80 million of the urban population is heavily concentrated on the Pacific shore of Honshū. Metropolitan Tokyo-Yokohama, with 35,000,000 people, is the world’s most populous city” (see Wikipedia). The map also includes Japan’s topography (see map inset for a conventional reference map and the surrounding bathymetry, which apparently played a crucial role in the development of the tsunami which followed the earthquake and caused much of the destruction on that densely populated Pacific shore.


(via Newsletter von statoo.ch)

Visualisierung des Erdbebens in Japan



14.03.2011

Data-Driven Documents

Mike Bostock's JavaScript library D3.js for manipulating documents based on data. 


"D3 allows you to bind arbitrary data to a Document Object Model (DOM), and then apply data-driven transformations to the document. As a trivial example, you can use D3 to generate a basic HTML table from an array of numbers. Or, use the same data to create an interactive SVG bar chart with smooth transitions and interaction.
D3 is not a traditional visualization framework. Rather than provide a monolithic system with all the features anyone may ever need, D3 solves only the crux of the problem: efficient manipulation of documents based on data. This gives D3 extraordinary flexibility, exposing the full capabilities of underlying technologies such as CSS3,HTML5 and SVG. It avoids learning a new intermediate proprietary representation. With minimal overhead, D3 is extremely fast, supporting large datasets and dynamic behaviors for interaction and animation. And, for those common needs, D3’s functional style allows code reuse through a diverse collection of optional modules."

Hier noch ein paar Beispiele

  

Beim Voronoi-Diagramm ist vor allem beeindruckend, mit welcher Geschwindigkeit die Polygone beim Darüberfahren mit der Maus neu berechnet werden.

Und noch eine spielerische Anwendung (man kann irgendein Bild als Paramter übergeben, http://koalastothemax.com?<your image url>)