source: subversion/applications/utils/change_tags/massgis.py @ 29710

Last change on this file since 29710 was 13719, checked in by crschmidt, 11 years ago

move refs that start with '0' aside, since they're not actually names that
anyone would actually use.

File size: 5.5 KB
Line 
1__version__ = "0.1"
2
3def conservation_organization(tags, type):
4    """Fix for a MassGIS OpenSpace todo: typo in 'conservation_organization'
5       in bulk import.
6    """
7   
8    if type == "node":
9        return False 
10   
11    changed = False
12   
13    if 'ownership' in tags and tags['ownership'] == 'conservation_rganization':
14        tags['ownership'] = 'conservation_organization'
15        changed = True
16   
17    tags['created_by'] = 'change_tags.py - massgis %s' % __version__
18
19    return changed   
20
21def playgrounds(tags, type):
22    changed = False
23   
24    if type == "way" and 'name' in tags:
25        name = tags['name']
26   
27        if name.endswith("Playground"):
28            if not 'leisure' in tags or tags['leisure'] != "playground":
29                changed = True
30                tags['leisure'] = 'playground'
31    tags['created_by'] = 'change_tags.py - massgis area_names %s' % __version__
32
33    return changed   
34
35def more_shrt_nms(tags, type):
36    import re
37    map = {
38      " Rec Area$": ' Recreation Area', 
39      " Nwr$": ' National Wildlife Refuge', 
40      " Wma$": ' Wildlife Management Area', 
41      " Nha$": ' Natural Heritage Area', 
42      " Wce$": ' Wildlife Conservation Easement', 
43      " Mdws$": ' Meadows', 
44      " Reserv\.$": ' Reservation', 
45      " St Forest$": ' State Forest', 
46      " Conservation La$": ' Conservation Land', 
47      " Cons Lnd$": ' Conservation Land', 
48      " Cons Land$": ' Conservation Land', 
49      " Cons Area$": ' Conservation Area', 
50      " Consv Land$": ' Conservation Land', 
51      " Sanc$": ' Sanctuary', 
52      " Consv Prjt$": ' Conservation Project',
53      " Pk$": ' Park',
54      " Conserv\. Land$": " Conservation Land"
55    }
56    remap = {}
57    for key, value in map.items():
58        pat = re.compile(key)
59        remap[pat] = value
60       
61    changed = False
62   
63    if type == "way" and 'name' in tags:
64        name = tags['name']
65        for key, value in remap.items():
66            new_name = key.sub(value, name)
67            if new_name != name:
68                tags['name'] = new_name
69                changed = True
70                break
71         
72    tags['created_by'] = 'change_tags.py - massgis short_names %s' % __version__
73
74    return changed   
75
76
77def area_names(tags, type):
78    """Fix for MassGIS OpenSpace areas: do better keying based on name, fix some common typos."""
79   
80    changed = False
81   
82    if type == "way" and 'name' in tags:
83        name = tags['name']
84       
85        # Common playground typos
86        if name.endswith("Plgd"):
87            name = name.replace("Plgd", "Playground")
88            tags['name'] = name
89            changed = True
90        elif name.endswith("Plygrd"):
91            name = name.replace("Plygrd", "Playground")
92            tags['name'] = name
93            changed = True
94        elif name.endswith("Playgroung"):
95            name = name.replace("Playgroung", "Playground")
96            tags['name'] = name
97            changed = True
98       
99        if name.endswith("Golf Course"):
100            if not 'leisure' in tags or tags['leisure'] != "golf_course":
101                changed = True
102                tags['leisure'] = "golf_course"
103                if 'landuse' in tags:
104                    del tags['landuse']
105        elif name.endswith("State Park"):
106            if not 'leisure' in tags or tags['leisure'] != "nature_reserve":
107                changed = True
108                tags['leisure'] = 'nature_reserve'
109               
110        elif (name.endswith("Park") and tags['massgis:FEE_OWNER'] != "National Park Service") \
111                or name.endswith("Playground") or name.endswith("Field"):
112            if not 'leisure' in tags or tags['leisure'] != "park":
113                changed = True         
114                tags['leisure'] = "park"
115
116    tags['created_by'] = 'change_tags.py - massgis area_names %s' % __version__
117
118    return changed   
119
120def ramps(tags, type):
121    import re
122
123    changed = False
124   
125    if type == "way" and 'name' in tags and 'highway' in tags:
126        name = tags['name']
127        status = tags['highway']
128   
129        # re.match checks for a match only at the beginning of the string
130        if re.match("Ramp\W", name):
131            tags['orig_name'] = name
132            del tags['name']
133            tags['ramp'] = "yes"
134
135            if status == 'motorway' or status == 'motorway_link':
136                tags['highway'] = 'motorway_link'
137            elif status == 'trunk' or status == 'trunk_link':
138                tags['highway'] = 'trunk_link'
139            elif status == 'primary' or status == 'primary_link':
140                tags['highway'] = 'primary_link'
141            elif status == 'secondary' or status == 'secondary_link':
142                tags['highway'] = 'secondary_link'
143            elif status == 'tertiary' or status == 'tertiary_link':
144                tags['highway'] = 'tertiary_link'
145            else:
146                raise Exception("Found a highway with unhandled type: %s" % status)
147
148            changed = True
149
150    tags['created_by'] = 'change_tags.py - massgis ramps %s' % __version__
151
152    return changed   
153
154def clear_node_tags(tags, type):
155    changed = False
156    if 'attribution' in tags and 'source' in tags:
157        if tags['attribution'] == 'Office of Geographic and Environmental Information (MassGIS)' and len(tags) == 2 or (len(tags) == 3 and 'created_by' in tags):
158            tags = {}
159            changed = True
160    return changed       
161
162def drop_secondary_refs(tags, type):
163    changed = False
164    if 'ref' in tags and tags['ref'].startswith("0"):
165        tags['massgis:ref'] = tags['ref']
166        del tags['ref']
167        changed = True
168    return changed   
Note: See TracBrowser for help on using the repository browser.