[Potlatch-dev] Splitting map_features.xml into separate files
Richard Fairhurst
richard at systemeD.net
Sun Jan 9 17:16:47 GMT 2011
map_features.xml is currently 3742 lines. That's quite horrible.
I've added support for includes, so we can split it into several files.
It works like this:
[...beginning of map_features.xml...]
<include file="map_features/roads.xml" />
[...rest of map_features.xml]
and then in roads.xml:
<featureGroup>
<feature name="Motorway">
<category>roads</category>
<line/>
<tag k="highway" v="motorway"/>
<inputSet ref="majorRoad"/>
<inputSet ref="common"/>
</feature>
<feature name="Trunk">
<category>roads</category>
<line/>
<tag k="highway" v="trunk"/>
<inputSet ref="majorRoad"/>
<inputSet ref="common"/>
</feature>
[...and so on...]
</featureGroup>
Some stuff to note:
- It's internally assembled into one big XML file before parsing. So you
can happily refer from an include file to inputSets within the main file.
- The include file must be a well-formed XML document. In other words: a
single root node. I suggest that the root node is <featureGroup>,
containing a bunch of <feature>s, and that <inputSet>s and <category>s
stay in mapfeatures.xml (because they need to be children of <mapFeatures>.
- All filepaths are resolved from the SWF's base path, _not_ the XML
file's path. So if you include "map_features/roads.xml", and that then
tries to include a further file, you'll still need to specify
"map_features/minor_roads.xml"
- resources/ is getting overcrowded and it'd make sense to put all but
the root map_features.xml into a map_features/ directory.
For anyone who's interested,
http://trac.openstreetmap.org/browser/applications/editors/potlatch2/net/systemeD/halcyon/NestedXMLLoader.as
is the code. Looks simple but took me hours largely due to closure
scoping issues. :(
cheers
Richard
More information about the Potlatch-dev
mailing list