Archive

Posts Tagged ‘gis’

Thematic cartography in ArcGIS

April 19th, 2009

In the past few weeks I've been reiterating my knowledge of thematic cartography principles and rules I was taught at geographical cartography course few years ago. I do not know what exactly triggered my interest again, but anyway, I quickly rediscovered the beauty of thematic cartography and the many ways it can convey and communicate spatial information. And as a media of its own, maps can also lie, of course.

One of the most widely used tools in thematic cartography are choropleths and „carto-charts“. In comparison to other commercial tools, ArcMap's capa­bilities are quite advanced but still not ideal, not to mention open source projects where complex feature symbolization is very often one of the last items on their to-do lists. ArcMap comes with a decent set of renderers – their job is to draw the features the way you like, symbolizing your data in some way.

Map symbology

Symbolization is one the keys to your map's readibility. Cartographic symbols can carry more information than one would think at first. Even in the simplest form, any symbol, say a plain old circle, is capable of expressing many variables by variating its properties. Its size can tell you about a city population – either broken down into categories or characterized by a functional relationship between the symbol size and the population. The fill color can then express its administrative function. If you add the circle outline width into the mix, you can have additional piece of information to say, e.g., whether the city has an university (thick outline) or not (thin outline). There are loads of other symbol properties you can use to express something, in our example it could also be the outline style (solid, dashed), the fill pattern, the shape (not only a circle, but also a square, a diamond etc.) or symbol orientation (which does not work exactly well for circles of course).

This is not easy to do at all in ArcMap or any other tools at the market. This could be seen as an advantage as you are not tempted to employ a complex symbology which could result in information overload and your map ending up as an unreadable mess. But I think you should have these tools at hand if you feel the need.

Another problem often encountered is generating a proper and good looking legend, which is just equally important as your symbol design. This is even a bigger issue in the present tools. Having a nice graph for proportional symbols in the map legend is nearly impossible, but is one of the most common things you will find in a professional thematic map. I believe this may very well be the distinction between good and bad map, if you were to choose one.

Specialized renderer project

These are some of the key reasons why I started a little personal project of mine aiming to implement some of the behavior described above in ArcGIS. While I believe there would be many users who would benefit from such toolset, it is mostly a self-amusing job. First prototype is capable of variating most properties of marker symbols, drive them by field value (either into break the values into categories or use a functional relationship if applicable), but the design strives to be transparent accross all symbol types. Main features will include:

  • Variating symbol properties like size, color, fill etc.
  • Properties can be dependent on database field values either by breaking them into intervals or specifying a function.
  • Properties can be set „recursively“, e.g. if you want to vary a symbol's fill, you can also vary the fill's color or pattern in the same way (for example again by using field values).

Once I implement a decent UI for the renderer, which is arguably the hardest part to get right as it needs to stay simple and clean, I'll post more on this, including some real-world samples and screenshots. Another step will be the legend, which is still in the early design stage as it gets quite complex if you want it to be reasonably flexible.

Stay tuned, more information is to come soon. If you have any suggestions, feel free to express them right away!

Uncategorized , , , ,

Exposing COM events from .NET: Implementing MapSurround in ArcMap

March 13th, 2009

Recently I needed to implement a custom map surround object in ArcMap from within the .NET framework environment. The legend, scale bar, north arrow are all examples of a map surround. What is specific to these objects is that they are associated with a particular map (data frame) and are typically created via IMap.CreateMap­Surround method. Read more…

Uncategorized , , , , , ,

Mapy.cz v OpenLayers

November 1st, 2008

Pokud jste se někdy zamýšleli nad tím, jakým způsobem lze použít mapy Seznamu (aka mapy.cz) v opensource knihovně OpenLayers, možná jste přišli na to, že to není tak jednoduché, jak se na první pohled zdá. Seznam sice poskytuje ke svým mapám API, ale to je, ačkoliv vcelku povedené, co do možností poněkud omezené oproti OpenLayers.
Read more…

Uncategorized , , , ,

GIS DSL

May 2nd, 2008

Zajímavou věcí, i když nijak novou, jsou tzv. doménově specifické jazyky (znáte někdo lepší překlad?). Dobrý a docela podrobný popis pojmu lze nalézt např. na Wikipedii, kratší a obecnější vysvětlení pak na root.cz. Co je zvláštní, že v oblasti GIS v podstatě žádné produkty ničím takovým vybaveny nejsou. Nebylo by fajn moci vyjádřit se např. tímto způsobem:

Dataset ds = open "folder://d:/data/shapefiles/";
Features lesy = ds open "lesy.shp";
Features silnice = ds open "silnice.shp";

Features silnice1a2tridy = query silnice {
   "TRIDA" in (1, 2)
}

Features vyberLesu = query lesy {
   area(.) > 5km2 and . intersects buffer(silnice1a2tridy, 100m)
}

double celkovaRozloha = 0;
foreach(Feature les in vyberLesu) {
  celkovaRozloha += area(les);
}

Výše uvedený pseudokód měl zjistit celkovou plochu lesů s výměrou nad 5km2, které leží do vzdálenosti 100m od silnic 1. a 2. třídy. Kdybychom podobnou záležitost měli napsat např. v ArcObjects, vyšlo by to určitě minimálně na 50 řádků kódu (spíš víc). Jistě, ArcGIS od ESRI poskytuje geoprocessing a na něj vázaný ModelBuilder, což v podstatě je grafická forma DSL, ale ten zase na druhou stranu nenabízí takovou kontrolu nad jednotlivými prvky a daty tak, jak bychom často potřebovali (i když výše popsaný příklad by se pomocí něj vzhledem k jednoduchosti dal popsat velice snadno). Geoprocessing v ESRI pomocí Pythonu je už tomuto cíli o něco blíže, ale stále je pro tento účel poněkud těžkopádný, jeho výhoda ovšem leží v dostupnosti široké škály modulů.

Potenciál je veliký – představme si jednotný jazyk nad různými systémy (ESRI, grass, …). Jistě, implementace něčeho takového by určitě byla oříšek, překvapující je snad jen to, že žádný takový projekt v současnosti neexistuje (rád bych se mýlil).

Uncategorized ,