Sign up ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I have a matrix of origin-destination flows and I am trying to figure out the best way to derive X number of functional spatial clusters from the data. I haven't done this particular type of analysis before, but can I treat the O-D matrix as a dissimilarity matrix and simply use a hierarchical clustering algorithm as discussed here? What, if anything, do I need to do to the O-D matrix if I'm going to go this route?

Thanks in advance.

share|improve this question

2 Answers 2

up vote 2 down vote accepted

Here is a rambling set of resources/publications I have collected on the topic.

I haven't dug into any of them enough to give real firm advice about whether or not they can be performed in R. The Flow mapping software and the Hennemann articles use slightly different and novel techniques (so I'm guessing would take custom code), the Ratti article though just looks like it uses some regular definitions from other networking theories (the Hennemann and Guo articles take some pain to make sure the clustering obeys spatial configurations).

Those articles are about clustering regions of inter-connections rather than clustering flows (which it sounds like you want), but some articles on clustering the flow lines themselves exist. For an example see Phan, Doantam, Ling Xiao, Ron Yeh, Pat Hanrahan & Terry Winograd. (2005) Flow Map Layout. In Information Visualization, 2005. INFOVIS 2005. IEEE Symposium: 219–224.| PDF here You can see similar interactive layouts in the D3.js hierarchical edge bundling, or here is a really cool example of it as well, Global Dependency Explorer via visual complexity. Unfortunately D3.js does not appear to support native flow data like you have, but may be something to keep on the radar (if that is something you want).

share|improve this answer
Thanks for these links. I was interested in the second approach, which I believe is an implementation of the Intermax approach. I believe that Bostock (D3) was involved in the creation of Protovis, which had flow map creation. However, I'm less interested in a pretty visualization and more interested in being able to derive lists of node regions. The context is deploying resources to manage and balance assets within each region, if that helps. –  scuerda Apr 12 '13 at 10:57
It isn't clear to me @scuerda how the intermax approach relates to edge bundling (or the other networking measures). Nice maps and statistics should be complements of one another. Post back if you receive a better answer (or derive one yourself). From your further description it isn't 100% clear to me that you really want clustering, but I've no doubt clustering may be useful to the end goal - good luck. –  Andy W Apr 12 '13 at 16:57
Hi Andy, sorry, I didn't mean to imply that good looking visualizations weren't useful. As I understand the Intermax approach, it is a way of defining regions based on flows / connectivity between a large number of nodes. As such, it produces clusters of functionally connected nodes. In any case, I'll post back with my solution. Thanks for your feedback. –  scuerda Apr 13 '13 at 13:58

if you're prepared to ditch the graph paper i've seen the HOPACH package used to map flows between clusters of regions as nodes

e.g. outputs see slide 15

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.