Thursday, 18 July 2019

web mapping - How to handle display of nested polygons (census, county/state, etc) for a given map extent


My question is how best to decide which layer (from a set of nested, aggregated census polygons) to display for any given map extent in an online map.


Australia's census boundaries are built from multiple layers, aggregated from highly detailed collection districts through a number of intermediate layers to eventually comprise the whole country. This same principle applies to city/county/state/country boundaries.


Switching census layers based on scale dependency is unsatisfactory, since there must be a compromise between the populated cities and the vastly empty interior. Eg, over Sydney the Collection Districts should show at around 1:10k whereas in rural areas they should show above 1:500k


1) Are there any examples available in online maps where this problem has been solved elegantly? All of the examples I've seen use scale dependencies to switch layers on/off



2) I'm contemplating counting the features every time the map extent changes, and using this to decide which is the best layer to display. This "breaks" the traditional GIS paradigm whereby layers can switch on/off based on scale, since in my scenario they may also switch on/off based on different map extents at the same scale.


Are there any examples of this in action? Does anyone have any thoughts or advice on whether this will be confusing to the user?


Eg, a user might be viewing Collection Districts, then pan the map slightly. This could cause the Collection Districts to switch off, and the next layer to switch on. Has this been done anywhere before?


Thanks, Steve




I've put a sample map at http://203.14.35.213/atlas-2.0/public/nsw/home/map/australia-population.html showing the direction I'm hoping to go. Note that this is a QA server so it may be slow, and not up 100% of the time.


Pan and zoom around the map down to street level, and note that the polygon boundaries change (if you open the Legend panel, you can see which of the 5 layers is currently displayed).


The boundary layer is chosen each time the map draws, based on the count of features rather than the scale (eg, a different boundary will draw over Sydney, compared to a rural area at the same scale). This can mean that panning the map results in the layer changing.


The idea is for this process to be transparent to the (novice) user, who should just see the "best" information wherever they browse.


My original question was whether the experts feel this "breaks" the traditional model of scale-dependent rendering. Does anyone have any feedback on whether this approach has merit or is flawed?




Answer



I haven't received a 100% satisfactory reply, so I guess I'll take my current implementation as the answer.


Each time the map extent changes, the number of features in the most detailed layer is counted. If this crosses a threshold then the next level up is tested, and so on.


The performance seems reasonable - by counting the centroids of the polygons, and drawing the polygons as Dynamic Layers, the drawing time is on par with the Bing basemap.


I believe this results in the best layer being shown at any scale, and any extent. As for breaking the paradigms - I'm happy to be a trail blazer.


Happy to take any comments or feedback.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...