- attributes = {'lon': 11.21408895, 'lat': 47.2417134, 'zoom': 14, 'width': 700, 'height': 400}
geojson = {
'type': 'FeatureCollection',
'features':
geojson = {
'type': 'FeatureCollection',
'features':
[11.230868, 47.244951],
[11.237853, 47.245470]]},
'properties': {'type': 'sledrun'}
[11.230868, 47.244951],
[11.237853, 47.245470]]},
'properties': {'type': 'sledrun'}
+ }],
+ 'properties': {
+ 'lon': 11.21408895,
+ 'lat': 47.2417134,
+ 'zoom': 14,
+ 'width': 700,
+ 'height': 400}
- wikitext = wrpylib.wrmwmarkup.create_wrmap(attributes, geojson)
+ wikitext = wrpylib.wrmwmarkup.create_wrmap(geojson)
assert wikitext == u'''
<wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">
<gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 11.190454</gasthaus>
assert wikitext == u'''
<wrmap lat="47.2417134" lon="11.21408895" zoom="14" width="700" height="400">
<gasthaus name="Rosskogelhütte" wiki="Rosskogelhütte">47.240689 11.190454</gasthaus>
import wrpylib.mwmarkup
WRMAP_POINT_TYPES = ['gasthaus', 'haltestelle', 'parkplatz', 'achtung', 'punkt']
import wrpylib.mwmarkup
WRMAP_POINT_TYPES = ['gasthaus', 'haltestelle', 'parkplatz', 'achtung', 'punkt']
-WRMAP_LINE_TYPE = ['rodelbahn', 'gehweg', 'alternative', 'lift', 'linie']
+WRMAP_LINE_TYPES = ['rodelbahn', 'gehweg', 'alternative', 'lift', 'anfahrt', 'linie']
class ParseError(RuntimeError):
class ParseError(RuntimeError):
# point
for point in coords:
lon, lat, symbol, title = point
# point
for point in coords:
lon, lat, symbol, title = point
- properties = {'type': symbol.lower()}
- if title: properties['name'] = title
+ properties = {}
+ if symbol is not None: properties['type'] = symbol.lower()
+ if title is not None: properties['name'] = title
json_features.append({
'type': 'Feature',
'geometry': {'type': 'Point', 'coordinates': [lon, lat]},
json_features.append({
'type': 'Feature',
'geometry': {'type': 'Point', 'coordinates': [lon, lat]},
# path
for path in paths:
style, entries = path
# path
for path in paths:
style, entries = path
- properties = {'type': 'line'}
+ style = style.lower()
+ PATH_TYPES = {u'6#ff014e9a': u'rodelbahn', u'6#ffe98401': u'gehweg', u'6#ff7f7fff': u'alternative', u'3#ff000000': u'lift', u'3#ffe1e100': u'anfahrt'}
+ if PATH_TYPES.has_key(style):
+ properties = {'type': PATH_TYPES[style]}
+ else:
+ properties = {'type': 'line'}
+ properties['dicke'] = style[0]
+ properties['farbe'] = style[4:]
json_features.append({
'type': 'Feature',
'geometry': {
json_features.append({
'type': 'Feature',
'geometry': {
json_features = []
for feature in wrmap_xml:
# determine feature type
json_features = []
for feature in wrmap_xml:
# determine feature type
- is_point = feature.tag in WRMAP_POINT_TYPE
- is_line = feature.tag in WRMAP_LINE_TYPE
+ is_point = feature.tag in WRMAP_POINT_TYPES
+ is_line = feature.tag in WRMAP_LINE_TYPES
if (not is_point and not is_line):
raise ParseError('Unknown element <{}>.'.format(feature.tag))
if (not is_point and not is_line):
raise ParseError('Unknown element <{}>.'.format(feature.tag))
-def create_wrmap(attributes, geojson):
+def create_wrmap(geojson):
"""Creates a <wrmap> wikitext from geojson (as python types)."""
wrmap_xml = xml.etree.ElementTree.Element('wrmap')
"""Creates a <wrmap> wikitext from geojson (as python types)."""
wrmap_xml = xml.etree.ElementTree.Element('wrmap')
- for k, v in attributes.iteritems():
+ for k, v in geojson['properties'].iteritems():
wrmap_xml.attrib[k] = str(v)
assert geojson['type'] == 'FeatureCollection'
json_features = geojson['features']
for json_feature in json_features:
wrmap_xml.attrib[k] = str(v)
assert geojson['type'] == 'FeatureCollection'
json_features = geojson['features']
for json_feature in json_features:
+ feature_xml = xml.etree.ElementTree.SubElement(wrmap_xml, json_feature['properties']['type'])
geo = json_feature['geometry']
if geo['type'] == 'Point':
geo = json_feature['geometry']
if geo['type'] == 'Point':
- wrmap_type = dict(zip(WRMAP_POINT_TYPE.values(), WRMAP_POINT_TYPE.keys()))
- feature_xml = xml.etree.ElementTree.SubElement(wrmap_xml, wrmap_type[json_feature['properties']['type']])
feature_xml.text = create_wrmap_coordinates([geo['coordinates']])
feature_xml.text = create_wrmap_coordinates([geo['coordinates']])
- feature_xml.attrib = json_feature['properties']
- if geo['type'] == 'LineString':
- wrmap_type = dict(zip(WRMAP_LINE_TYPE.values(), WRMAP_LINE_TYPE.keys()))
- feature_xml = xml.etree.ElementTree.SubElement(wrmap_xml, wrmap_type[json_feature['properties']['type']])
feature_xml.text = create_wrmap_coordinates(geo['coordinates'])
feature_xml.text = create_wrmap_coordinates(geo['coordinates'])
- feature_xml.attrib = json_feature['properties']
+ feature_xml.attrib = json_feature['properties']
return xml.etree.ElementTree.tostring(wrmap_xml)
return xml.etree.ElementTree.tostring(wrmap_xml)