From 52978bfd98c84e82022cf1e183e03d4a8dc23283 Mon Sep 17 00:00:00 2001 From: Nie <yni@eonerc.rwth-aachen.de> Date: Mon, 6 Feb 2023 11:22:04 +0100 Subject: [PATCH] tool and example for network generation --- network/district.py | 492 ++++ network/overpass.geojson | 5245 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 5737 insertions(+) create mode 100644 network/district.py create mode 100644 network/overpass.geojson diff --git a/network/district.py b/network/district.py new file mode 100644 index 0000000..79df426 --- /dev/null +++ b/network/district.py @@ -0,0 +1,492 @@ +"""Develop on the project uesgraph from RWTH Aachen University, +E.ON Energy Research Center, Institute for Energy Efficient Buildings and +Indoor Climate. +The district object used a updated coordinate system with the unit of meter. +""" +import os +import numpy as np +import networkx as nx +import pyproj +import shapely.geometry as sg +import shapely.ops as ops +from shapely.prepared import prep +import geopandas as gpd +import matplotlib.pyplot as plt +import momepy +from itertools import combinations + + +def latlon2abs(geometry, lat1, lat2): + """Convert a geometry object from lat/lon to absolute coords. + + Taken from http://gis.stackexchange.com/questions/127607/ + + Parameters + ---------- + geometry : a shapely geometry object + lat1 : float + First reference latitude + lat 2 : float + Second reference latitude + + Returns + ------- + converted : a shapely geometry object + """ + proj_4326_crs = pyproj.crs.CRS("epsg:4326") + proj_from_latlat_crs = pyproj.crs.CRS(proj="aea", lat_1=lat1, lat_2=lat2) + transformer = pyproj.Transformer.from_crs( + proj_4326_crs, + proj_from_latlat_crs, + always_xy=True).transform + + converted = ops.transform(transformer, geometry) + + return converted + + +def shapely_insert_point(point, line): + """Add a shapely point into shapely linestring. The point should be + contained by the line. In the transformation of roads in map could change + the form of road, in some situation the intersection point of two road + is not described in the linestring. After the transformation the + information is loss. The handling of the data could use Shapely methods + and attributes, it provides lot of analysis tool. + This method is not finished, because the crs transformation method could + avoid the problem. Remain this method just for backup and would be + deleted for stable version.""" + if line.contains(point): + # if contains, means the point is already on the line, nothing need + # to be changed. + print('the line contains point') + else: + pass + + +def shapely_split_street(street, other_pt_list=None): + """The osm generated street contains multiple points, this method split + the street into multipel lines with these points. So that by generation + of network, the whole street could be changed into edge.""" + shapely_pt_list = [] + # print(street) + if isinstance(street, sg.LineString): + for point in street.coords: + shapely_pt_list.append(sg.Point(point)) + elif isinstance(street, sg.MultiLineString): + for line in street: + for point in line.coords: + shapely_pt_list.append(sg.Point(point)) + + if other_pt_list is not None: + shapely_pt_list += other_pt_list + + for pt in shapely_pt_list: + split_list = ops.split(street, pt) + street = sg.MultiLineString(split_list.geoms) + # print(street) + return street + + +def nx_search_subgraph(graph, node_list): + """Use networkx method to find a subgraph containing all nodes ( + buildings) in between. The code comes from + https://stackoverflow.com/questions/61929188/get-networkx-subgraph-containing-all-nodes-in-between + """ + # paths = {} + # for nodes in combinations(node_list, r=2): + # paths[nodes] = nx.shortest_path_length(graph, *nodes) + # + # max_path = max(paths.items(), key=lambda x: x[1])[0] + # longest_induced_path = nx.shortest_path(graph, *max_path) + + H = nx.MultiGraph() + for nodes in combinations(node_list, r=2): + shortest_path = nx.shortest_path(graph, *nodes, weight='mm_len') + sG = nx.subgraph(graph, shortest_path) + H = nx.compose(sG, H) + # nx.draw(H, {n: [n[0], n[1]] for n in list(H.nodes)}) + # plt.show() + + return H + + +class District(nx.Graph): + """ + Contains buildings and streets, could generate the minimum spanning + tree for energy network. + Buildings are polygon. + Streets are multiple lines. + """ + + def __init__(self): + super().__init__() + self.buildings = None + self.streets = None + + self.min_lat = None + self.min_lon = None + self.max_lat = None + self.max_lon = None + + def read_osm(self, osm_file): + """using geopands to import buildings and streets from OpenStreetMap + data""" + roh_data = gpd.read_file((osm_file)) + + # Filter buildings with building column. If some specific building + # type like garage are not wanted, filter condition could be changed. + self.buildings = roh_data[roh_data['building'].notnull()] + # print(self.buildings) + + # Filter roads, same as building dataframe, the specific road type + # could be used as additional condition. + self.streets = roh_data[roh_data['building'].isnull()] + # print(self.streets) + + def crs_trans(self, adj_precision=False): + """Transform the coordination reference system into germany center + reference system, which use meter as the unit.""" + self.buildings = self.buildings.to_crs(25832) + self.streets = self.streets.to_crs(25832) + + # adjust precision for each point. The precision could cause problem + # at finding a point on the line. This way doesn't work as well. Just + # save as a backup. + if adj_precision: + for idx, bld in self.buildings.iterrows(): + geojson = sg.mapping(bld['geometry']) + geojson['coordinates'] = np.round(np.array( + geojson['coordinates']), 2) + self.buildings['geometry'][idx] = sg.shape(geojson) + + for idx, street in self.streets.iterrows(): + geojson = sg.mapping(street['geometry']) + geojson['coordinates'] = np.round(np.array( + geojson['coordinates']), 2) + self.streets['geometry'][idx] = sg.shape(geojson) + + def adj_pos(self): + """adjust the canvas position. Using the minimum latitude and + longitude as the zero point.""" + min_lat_list = [] + min_lon_list = [] + max_lat_list = [] + max_lon_list = [] + + for idx, bld in self.buildings.iterrows(): + min_lat_list.append(bld['geometry'].bounds[0]) + min_lon_list.append(bld['geometry'].bounds[1]) + max_lat_list.append(bld['geometry'].bounds[2]) + max_lon_list.append(bld['geometry'].bounds[3]) + + for idx, street in self.streets.iterrows(): + min_lat_list.append(street['geometry'].bounds[0]) + min_lon_list.append(street['geometry'].bounds[1]) + max_lat_list.append(street['geometry'].bounds[2]) + max_lon_list.append(street['geometry'].bounds[3]) + + self.min_lat = min(min_lat_list) + self.min_lon = min(min_lon_list) + self.max_lat = max(max_lat_list) + self.max_lon = max(max_lon_list) + # print(self.min_lat) + # print(self.min_lon) + # print(self.max_lat) + # print(self.max_lon) + + # Adjust the coordinate of points in Polygon and LineString + for idx, bld in self.buildings.iterrows(): + coords = bld['geometry'].exterior.coords[:] + for point_idx in range(len(coords)): + coords[point_idx] = (coords[point_idx][0] - self.min_lat, + coords[point_idx][1] - self.min_lon) + self.buildings['geometry'][idx] = sg.Polygon(coords) + + for idx, street in self.streets.iterrows(): + coords = street['geometry'].coords[:] + for point_idx in range(len(coords)): + coords[point_idx] = (coords[point_idx][0] - self.min_lat, + coords[point_idx][1] - self.min_lon) + self.streets['geometry'][idx] = sg.LineString(coords) + + def line_to_multi(self): + """Turn the shapely LineString into MultiLineString, whose content + Lines are only consist of two point. By generation of networkx object + the lineString object might loss the information of points in line""" + for idx, street in self.streets.iterrows(): + if isinstance(street['geometry'], sg.LineString): + self.streets['geometry'][idx] = \ + shapely_split_street(street['geometry']) + elif isinstance(street['geometry'], sg.MultiLineString): + new_seg_list = [] + for line in street['geometry']: + line_seg = shapely_split_street(line) + new_seg_list += list(line_seg.geoms) + self.streets['geometry'][idx] = sg.MultiLineString(new_seg_list) + + def merge_streets(self, other_streets_list=None): + """merge streets into a multilinestring.""" + street_list = [] + for street in self.streets['geometry']: + if isinstance(street, sg.MultiLineString): + for lines in street: + street_list.append(lines) + elif isinstance(street, sg.LineString): + street_list.append(street) + + if other_streets_list is not None: + for other_street in other_streets_list: + street_list.append(other_street) + return street_list + else: + return ops.linemerge(street_list) + + def gen_network(self): + """Using the buildings and roads geographical information to generate + the shortest network, which is along the roads and connect all the + building to a possible network. In this method, the methods from + shapely for analysing graph are used.""" + + all_street = self.merge_streets() + + # split the streets with the nearest points. Since the points might + # not on the line because of precision issue, using the two + # preliminary lines to split the original streets. Save the point on + # street to split the street later. + bld_street_list = [] + bld_pt_list = [] + bld_node_list = [] + street_pt_list = [] + for bld in self.buildings.centroid: + point_list = list(ops.nearest_points(all_street, bld)) + bld_pt_list.append(point_list[1]) + bld_node_list.append((point_list[1].x, point_list[1].y)) + + for idx, street_line in self.streets.iterrows(): + street = None + seg_idx = 1 + if isinstance(street_line['geometry'], sg.LineString): + if point_list[0].buffer(0.01).intersection( + street_line['geometry']): + point_left = sg.Point(list(point_list[0].buffer( + 0.01).intersection( + street_line['geometry'].parallel_offset( + distance=0.001, side='left')).coords[0])) + point_right = sg.Point(list(point_list[0].buffer( + 0.01).intersection( + street_line['geometry'].parallel_offset( + distance=0.001, side='right')).coords[0])) + + pre_street_left = sg.LineString([point_left, point_list[1]]) + pre_street_right = sg.LineString( + [point_right, point_list[1]]) + if pre_street_left.crosses(street_line['geometry']): + split_list = ops.split(street_line['geometry'], + pre_street_left) + street = sg.MultiLineString(split_list.geoms) + elif pre_street_right.crosses(street_line['geometry']): + split_list = ops.split(street_line['geometry'], + pre_street_right) + street = sg.MultiLineString(split_list.geoms) + elif isinstance(street_line['geometry'], sg.MultiLineString): + line_seg_list = [] + connect_street = False + seg_idx = 0 + for line in range(len(street_line['geometry'])): + if point_list[0].buffer(0.01).intersection( + street_line['geometry'][line]): + connect_street = True + seg_idx = line + 1 + point_left = sg.Point(list(point_list[0].buffer( + 0.01).intersection( + street_line['geometry'][line].parallel_offset( + distance=0.001, side='left')).coords[0])) + point_right = sg.Point(list(point_list[0].buffer( + 0.01).intersection( + street_line['geometry'][line].parallel_offset( + distance=0.001, side='right')).coords[0])) + + pre_street_left = sg.LineString( + [point_left, point_list[1]]) + pre_street_right = sg.LineString( + [point_right, point_list[1]]) + if pre_street_left.crosses(street_line['geometry'][line]): + split_list = ops.split(street_line['geometry'][line], + pre_street_left) + line_seg_list += split_list.geoms + elif pre_street_right.crosses( + street_line['geometry'][line]): + split_list = ops.split(street_line['geometry'][line], + pre_street_right) + line_seg_list += split_list.geoms + # else: + # street = None + else: + line_seg_list.append(street_line['geometry'][line]) + + if connect_street: + street = sg.MultiLineString(line_seg_list) + + if street: + street_pt = sg.Point(list(list(street.geoms)[ + seg_idx].coords)[0]) + street_pt_list.append(street_pt) + bld_street = sg.LineString((point_list[1], street_pt)) + bld_street_list.append(bld_street) + self.streets['geometry'][idx] = street + + self.line_to_multi() + print(bld_street_list) + print('##') + new_streets = self.merge_streets(bld_street_list) + street_df = gpd.GeoDataFrame({'geometry': new_streets}, + crs=self.streets.crs, + geometry='geometry') + + # plot the street segments + ########################################## + # fig, axs = plt.subplots(figsize=(12, 6)) + # for geom in new_streets: + # xs, ys = geom.xy + # axs.plot(xs, ys) + # plt.show() + + # use networkx to generate subgraph + # The package momepy could change the geopandas dataframe into a + # networkx object. The approach method for primal would only save the + # start and end point of the lines. These codes are not used in the + # current use case. + G = momepy.gdf_to_nx(street_df, approach="primal") + print(G.edges.data()) + sG = nx_search_subgraph(G, bld_node_list) + # nodes, edges, sw = momepy.nx_to_gdf(sG, points=True, lines=True, + # spatial_weights=True) + + # print(nodes) + # print(edges) + # print(edges.length) + # f, ax = plt.subplots(figsize=(12, 6)) + # nodes.plot(ax=ax, column='geometry', cmap='tab20b', + # zorder=2) + # edges.plot(ax=ax, color='lightgrey', zorder=1) + # ax.set_axis_off() + # plt.show() + + return sG + + # not used, might be deleted later + def search_nearest_pt(self): + """find the nearest point of streets and each building. Merge the + streets at first and find the nearest point with shapely method.""" + all_street = self.merge_streets() + + # generate empty gdf to store the network points and the lines + # between building and street. + points_df = gpd.GeoDataFrame(crs=self.streets.crs, columns=['geometry'], + geometry='geometry') + lines_df = gpd.GeoDataFrame(crs=self.streets.crs, columns=['geometry'], + geometry='geometry') + + # search the nearest point for buildings and streets. + for bld in self.buildings.centroid: + # point_list = list(ops.nearest_points(bld, all_street)) + point_list = list(ops.nearest_points(all_street, bld)) + + # The nearest point is not on the line of street because of + # precision issues. Using buffer and intersection to find another + # point on the line. + # point_list[1] = sg.Point(list(point_list[1].buffer( + # 0.0001).intersection(all_street).coords[0])) + # point_list[1] = sg.Point(list(all_street.intersection(point_list[1].buffer( + # 0.0001)).coords[0])) + new_point_bld = gpd.GeoDataFrame(crs=self.streets.crs, + columns=['geometry'], + geometry=[point_list[0]]) + new_point_street = gpd.GeoDataFrame(crs=self.streets.crs, + columns=['geometry'], + geometry=[point_list[1]]) + new_line = gpd.GeoDataFrame(crs=self.streets.crs, + columns=['geometry'], + geometry=[sg.LineString(point_list)]) + points_df = points_df.append(new_point_bld) + points_df = points_df.append(new_point_street) + lines_df = lines_df.append(new_line) + + if all_street.contains(point_list[0]): + print('find point 1') + if all_street.contains(point_list[1]): + print('find point 2') + if point_list[0].within(all_street.buffer(0.0000001)): + print('find point 3') + if point_list[1].within(all_street.buffer(0.0000001)): + print('find point 4') + # print(type(list(point_list[1].buffer(0.001).intersection( + # all_street).coords[0]))) + + return points_df, lines_df + + # not used, might be deleted later + def crs_to_meter(self): + """using pyproj to turn the coordinate reference system (crs) to + absolute distance, which could be used to calculate the length of + network and area of buildings.""" + for idx, bld in self.buildings.iterrows(): + self.buildings['geometry'][idx] = \ + latlon2abs(bld['geometry'], bld['geometry'].exterior.coords[0][ + 1], bld['geometry'].exterior.coords[1][1]) + + # Todo: The code is not right for roads, because the intersection + # information of line segments is lost after coordinate transformation + # it could be solved with shapely function ops.linemerge(lines), + # or add the intersect points into the road information + # The following codes are the pitch for the transformations problem. + # for idx_1, street_1 in self.streets.iterrows(): + # for idx_2, street_2 in self.streets.iterrows(): + # if isinstance(self.streets['geometry'][idx_1].intersection( + # self.streets['geometry'][idx_2]), Point): + # shapely_insert_point(self.streets['geometry'][idx_1 + # ].intersection( + # self.streets['geometry'][idx_2]), self.streets[ + # 'geometry'][idx_1]) + + for idx, street in self.streets.iterrows(): + self.streets['geometry'][idx] = \ + latlon2abs(street['geometry'], street['geometry'].coords[0][ + 1], street['geometry'].coords[1][1]) + + +if __name__ == "__main__": + base_path = os.path.dirname(__file__) + map_file = os.path.join(base_path, 'overpass.geojson') + + d = District() + d.read_osm(map_file) + + # reducing the number of buildings and streets for test + d.buildings = d.buildings[0:6] + + # handling map + ##################### + d.crs_trans() + d.adj_pos() + + # generating network + ##################### + G = d.gen_network() + + # Plotting streets and building + ##################### + # f, ax = plt.subplots(1, 1, figsize=(12, 6)) + # d.streets.plot(color="k", ax=ax, aspect=1) + # # d.buildings.plot(color="k", ax=ax, aspect=1) + # d.buildings.centroid.plot(color="k", ax=ax, aspect=1) + # plt.show() + + # Plotting generated network with/without streets + ###################### + positions = {n: [n[0], n[1]] for n in list(G.nodes)} + f, ax = plt.subplots(1, 1, figsize=(40, 20)) + # f, ax = plt.subplots(1, 1, figsize=(12, 6)) + # d.streets.plot(color="k", ax=ax) + nx.draw(G, positions, ax=ax, node_size=50) + plt.show() diff --git a/network/overpass.geojson b/network/overpass.geojson new file mode 100644 index 0000000..bd38fdf --- /dev/null +++ b/network/overpass.geojson @@ -0,0 +1,5245 @@ +{ + "type": "FeatureCollection", + "generator": "overpass-ide", + "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.", + "timestamp": "2022-12-01T17:52:39Z", + "features": [ + { + "type": "Feature", + "properties": { + "@id": "way/95924050", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "13", + "addr:postcode": "52074", + "addr:street": "Hörnstieg", + "building": "apartments", + "building:levels": "2", + "roof:colour": "grey", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0573793, + 50.7827378 + ], + [ + 6.0573579, + 50.7826604 + ], + [ + 6.0575392, + 50.7826397 + ], + [ + 6.0575601, + 50.7827181 + ], + [ + 6.0574735, + 50.7827274 + ], + [ + 6.0573793, + 50.7827378 + ] + ] + ] + }, + "id": "way/95924050" + }, + { + "type": "Feature", + "properties": { + "@id": "way/95924062", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "67", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "apartments", + "building:levels": "2", + "roof:colour": "grey", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0575937, + 50.7830167 + ], + [ + 6.0574623, + 50.7830317 + ], + [ + 6.0574512, + 50.7829917 + ], + [ + 6.0574422, + 50.782955 + ], + [ + 6.0575728, + 50.7829402 + ], + [ + 6.0575937, + 50.7830167 + ] + ] + ] + }, + "id": "way/95924062" + }, + { + "type": "Feature", + "properties": { + "@id": "way/104657385", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "72", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0586729, + 50.7841951 + ], + [ + 6.058547, + 50.7842368 + ], + [ + 6.0584408, + 50.7841081 + ], + [ + 6.0585112, + 50.7840848 + ], + [ + 6.0585668, + 50.7840664 + ], + [ + 6.0586729, + 50.7841951 + ] + ] + ] + }, + "id": "way/104657385" + }, + { + "type": "Feature", + "properties": { + "@id": "way/104657387", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "60", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0599303, + 50.7836083 + ], + [ + 6.0598128, + 50.7836675 + ], + [ + 6.0596683, + 50.7835522 + ], + [ + 6.0597352, + 50.7835185 + ], + [ + 6.0597858, + 50.783493 + ], + [ + 6.0599303, + 50.7836083 + ] + ] + ] + }, + "id": "way/104657387" + }, + { + "type": "Feature", + "properties": { + "@id": "way/104657388", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "68", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0591159, + 50.7840051 + ], + [ + 6.0589979, + 50.7840638 + ], + [ + 6.0588548, + 50.7839481 + ], + [ + 6.0589303, + 50.7839106 + ], + [ + 6.0589728, + 50.7838894 + ], + [ + 6.0591159, + 50.7840051 + ] + ] + ] + }, + "id": "way/104657388" + }, + { + "type": "Feature", + "properties": { + "@id": "way/104657395", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "64", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0595223, + 50.7838121 + ], + [ + 6.0594045, + 50.783871 + ], + [ + 6.0592608, + 50.7837554 + ], + [ + 6.0593284, + 50.7837216 + ], + [ + 6.0593786, + 50.7836965 + ], + [ + 6.0595223, + 50.7838121 + ] + ] + ] + }, + "id": "way/104657395" + }, + { + "type": "Feature", + "properties": { + "@id": "way/125767549", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "52", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0605725, + 50.7832223 + ], + [ + 6.060685, + 50.7831827 + ], + [ + 6.0607865, + 50.7832981 + ], + [ + 6.060674, + 50.7833377 + ], + [ + 6.0605725, + 50.7832223 + ] + ] + ] + }, + "id": "way/125767549" + }, + { + "type": "Feature", + "properties": { + "@id": "way/139975779", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "62", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0598128, + 50.7836675 + ], + [ + 6.0599303, + 50.7836083 + ], + [ + 6.0600747, + 50.7837235 + ], + [ + 6.0599572, + 50.7837827 + ], + [ + 6.0598128, + 50.7836675 + ] + ] + ] + }, + "id": "way/139975779" + }, + { + "type": "Feature", + "properties": { + "@id": "way/139975780", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "66", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0594045, + 50.783871 + ], + [ + 6.0595223, + 50.7838121 + ], + [ + 6.0596661, + 50.7839277 + ], + [ + 6.0595483, + 50.7839866 + ], + [ + 6.0594045, + 50.783871 + ] + ] + ] + }, + "id": "way/139975780" + }, + { + "type": "Feature", + "properties": { + "@id": "way/139975781", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "70", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0589979, + 50.7840638 + ], + [ + 6.0591159, + 50.7840051 + ], + [ + 6.0592592, + 50.784121 + ], + [ + 6.0591412, + 50.7841796 + ], + [ + 6.0589979, + 50.7840638 + ] + ] + ] + }, + "id": "way/139975781" + }, + { + "type": "Feature", + "properties": { + "@id": "way/139975782", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "74", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.058547, + 50.7842368 + ], + [ + 6.0586729, + 50.7841951 + ], + [ + 6.0587794, + 50.7843242 + ], + [ + 6.0586534, + 50.784366 + ], + [ + 6.058547, + 50.7842368 + ] + ] + ] + }, + "id": "way/139975782" + }, + { + "type": "Feature", + "properties": { + "@id": "way/139975783", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "76", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "apartments" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0579393, + 50.7843211 + ], + [ + 6.0578764, + 50.784236 + ], + [ + 6.0580865, + 50.7841744 + ], + [ + 6.0581488, + 50.7842604 + ], + [ + 6.0579393, + 50.7843211 + ] + ] + ] + }, + "id": "way/139975783" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150852", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "46", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0586467, + 50.7828944 + ], + [ + 6.0587235, + 50.782857 + ], + [ + 6.0588054, + 50.7829233 + ], + [ + 6.0587458, + 50.782952 + ], + [ + 6.0587668, + 50.7829693 + ], + [ + 6.0587194, + 50.7829925 + ], + [ + 6.0586688, + 50.7829516 + ], + [ + 6.0587008, + 50.782934 + ], + [ + 6.0586467, + 50.7828944 + ] + ] + ] + }, + "id": "way/147150852" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150854", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "55", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0586599, + 50.7827834 + ], + [ + 6.0585801, + 50.782717 + ], + [ + 6.0586275, + 50.7826944 + ], + [ + 6.0586091, + 50.7826789 + ], + [ + 6.0586515, + 50.7826587 + ], + [ + 6.0586749, + 50.7826475 + ], + [ + 6.0586874, + 50.782658 + ], + [ + 6.0587058, + 50.7826736 + ], + [ + 6.0586758, + 50.7826879 + ], + [ + 6.0587424, + 50.782744 + ], + [ + 6.0586599, + 50.7827834 + ] + ] + ] + }, + "id": "way/147150854" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150858", + "building": "garages" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0585415, + 50.783038 + ], + [ + 6.0585618, + 50.7830304 + ], + [ + 6.0585359, + 50.7830026 + ], + [ + 6.0586119, + 50.7829798 + ], + [ + 6.0586688, + 50.7829516 + ], + [ + 6.0587194, + 50.7829925 + ], + [ + 6.0587381, + 50.7830093 + ], + [ + 6.0586746, + 50.7830309 + ], + [ + 6.0585674, + 50.7830667 + ], + [ + 6.0585415, + 50.783038 + ] + ] + ] + }, + "id": "way/147150858" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150882", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0578255, + 50.783251 + ], + [ + 6.057801, + 50.783193 + ], + [ + 6.057841, + 50.7831862 + ], + [ + 6.0578655, + 50.7832442 + ], + [ + 6.0578255, + 50.783251 + ] + ] + ] + }, + "id": "way/147150882" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150886", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0591817, + 50.7826614 + ], + [ + 6.0591763, + 50.7826581 + ], + [ + 6.0592245, + 50.7826269 + ], + [ + 6.0592851, + 50.7826633 + ], + [ + 6.0593479, + 50.7827022 + ], + [ + 6.0593014, + 50.782733 + ], + [ + 6.0592374, + 50.7826936 + ], + [ + 6.0591817, + 50.7826614 + ] + ] + ] + }, + "id": "way/147150886" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150890", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "50", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0583359, + 50.7831586 + ], + [ + 6.0582936, + 50.7831124 + ], + [ + 6.058256, + 50.7830737 + ], + [ + 6.0583243, + 50.7830472 + ], + [ + 6.0583378, + 50.7830593 + ], + [ + 6.0583647, + 50.7830469 + ], + [ + 6.0583371, + 50.7830171 + ], + [ + 6.0584106, + 50.7829896 + ], + [ + 6.0584758, + 50.7830625 + ], + [ + 6.0584041, + 50.7830893 + ], + [ + 6.0583951, + 50.7830796 + ], + [ + 6.058366, + 50.7830915 + ], + [ + 6.0584044, + 50.7831323 + ], + [ + 6.0583359, + 50.7831586 + ] + ] + ] + }, + "id": "way/147150890" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150894", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0582528, + 50.7831274 + ], + [ + 6.0582936, + 50.7831124 + ], + [ + 6.0583359, + 50.7831586 + ], + [ + 6.0582951, + 50.7831736 + ], + [ + 6.0582855, + 50.7831631 + ], + [ + 6.0582528, + 50.7831274 + ] + ] + ] + }, + "id": "way/147150894" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150907", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "50a", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "detached" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0580005, + 50.7832123 + ], + [ + 6.0579536, + 50.7831162 + ], + [ + 6.0581431, + 50.783079 + ], + [ + 6.058166, + 50.7831258 + ], + [ + 6.058189, + 50.783173 + ], + [ + 6.05819, + 50.7831751 + ], + [ + 6.0580005, + 50.7832123 + ] + ] + ] + }, + "id": "way/147150907" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150930", + "building": "house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0584455, + 50.7828017 + ], + [ + 6.0583971, + 50.7827509 + ], + [ + 6.0582868, + 50.7827933 + ], + [ + 6.0582674, + 50.7827729 + ], + [ + 6.058405, + 50.7827201 + ], + [ + 6.0584729, + 50.7827912 + ], + [ + 6.0584455, + 50.7828017 + ] + ] + ] + }, + "id": "way/147150930" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150932", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "48", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0584758, + 50.7830625 + ], + [ + 6.0584106, + 50.7829896 + ], + [ + 6.0584947, + 50.7829582 + ], + [ + 6.0585359, + 50.7830026 + ], + [ + 6.0585618, + 50.7830304 + ], + [ + 6.0585415, + 50.783038 + ], + [ + 6.0585674, + 50.7830667 + ], + [ + 6.0585926, + 50.7830949 + ], + [ + 6.0585241, + 50.7831202 + ], + [ + 6.0584758, + 50.7830625 + ] + ] + ] + }, + "id": "way/147150932" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150940", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "5", + "addr:postcode": "52074", + "addr:street": "Hörnstieg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0576323, + 50.7832395 + ], + [ + 6.0577134, + 50.7832257 + ], + [ + 6.0577063, + 50.7832091 + ], + [ + 6.057801, + 50.783193 + ], + [ + 6.0578255, + 50.783251 + ], + [ + 6.0578471, + 50.7833019 + ], + [ + 6.0577474, + 50.7833189 + ], + [ + 6.0576714, + 50.7833318 + ], + [ + 6.0576512, + 50.7832842 + ], + [ + 6.0576323, + 50.7832395 + ] + ] + ] + }, + "id": "way/147150940" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150942", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.058189, + 50.783173 + ], + [ + 6.058166, + 50.7831258 + ], + [ + 6.0582371, + 50.7831123 + ], + [ + 6.0582528, + 50.7831274 + ], + [ + 6.0582855, + 50.7831631 + ], + [ + 6.0582621, + 50.7831731 + ], + [ + 6.0582243, + 50.7831893 + ], + [ + 6.0582094, + 50.7831664 + ], + [ + 6.058189, + 50.783173 + ] + ] + ] + }, + "id": "way/147150942" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150962", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "40", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0590976, + 50.7827596 + ], + [ + 6.0590054, + 50.782703 + ], + [ + 6.0590599, + 50.7826674 + ], + [ + 6.0591216, + 50.7827026 + ], + [ + 6.0591456, + 50.7826864 + ], + [ + 6.0592013, + 50.7827186 + ], + [ + 6.0592579, + 50.7827519 + ], + [ + 6.0592123, + 50.782781 + ], + [ + 6.059134, + 50.7827347 + ], + [ + 6.0590976, + 50.7827596 + ] + ] + ] + }, + "id": "way/147150962" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150965", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "61", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "apartments" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0581034, + 50.7828637 + ], + [ + 6.0582868, + 50.7827933 + ], + [ + 6.0583727, + 50.7828841 + ], + [ + 6.058289, + 50.7829163 + ], + [ + 6.0582699, + 50.7828963 + ], + [ + 6.0581709, + 50.7829343 + ], + [ + 6.0581034, + 50.7828637 + ] + ] + ] + }, + "id": "way/147150965" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156150", + "building": "garages" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0604348, + 50.782842 + ], + [ + 6.0603861, + 50.7828011 + ], + [ + 6.0603397, + 50.7827622 + ], + [ + 6.0604021, + 50.7827323 + ], + [ + 6.06046, + 50.782781 + ], + [ + 6.0604962, + 50.7827637 + ], + [ + 6.060547, + 50.7828064 + ], + [ + 6.0605058, + 50.7828262 + ], + [ + 6.0604976, + 50.7828193 + ], + [ + 6.0604404, + 50.7828467 + ], + [ + 6.0604348, + 50.782842 + ] + ] + ] + }, + "id": "way/147156150" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156152", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "75", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0589125, + 50.7834803 + ], + [ + 6.0589899, + 50.7835476 + ], + [ + 6.0589088, + 50.7835852 + ], + [ + 6.058879, + 50.7835593 + ], + [ + 6.0588033, + 50.7835943 + ], + [ + 6.0587599, + 50.7835565 + ], + [ + 6.0587716, + 50.7835512 + ], + [ + 6.0587432, + 50.7835265 + ], + [ + 6.058812, + 50.7834947 + ], + [ + 6.0588361, + 50.7835157 + ], + [ + 6.0589125, + 50.7834803 + ] + ] + ] + }, + "id": "way/147156152" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156154", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "77", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0584729, + 50.7836228 + ], + [ + 6.0585021, + 50.7836466 + ], + [ + 6.0585653, + 50.7836981 + ], + [ + 6.0585364, + 50.7837123 + ], + [ + 6.0585686, + 50.7837386 + ], + [ + 6.0584943, + 50.7837745 + ], + [ + 6.0584165, + 50.7837102 + ], + [ + 6.0584797, + 50.7836783 + ], + [ + 6.0584347, + 50.7836416 + ], + [ + 6.0584729, + 50.7836228 + ] + ] + ] + }, + "id": "way/147156154" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156155", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "59", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0601787, + 50.7829034 + ], + [ + 6.0602318, + 50.7828769 + ], + [ + 6.0602487, + 50.7828905 + ], + [ + 6.0603013, + 50.7828642 + ], + [ + 6.0603817, + 50.7829295 + ], + [ + 6.0603069, + 50.7829668 + ], + [ + 6.0602584, + 50.7829279 + ], + [ + 6.060228, + 50.7829431 + ], + [ + 6.0601787, + 50.7829034 + ] + ] + ] + }, + "id": "way/147156155" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156156", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "63", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0597727, + 50.7830892 + ], + [ + 6.0598904, + 50.7830354 + ], + [ + 6.0599075, + 50.7830503 + ], + [ + 6.0599619, + 50.783025 + ], + [ + 6.0600391, + 50.7830943 + ], + [ + 6.0599676, + 50.7831276 + ], + [ + 6.0599383, + 50.7831023 + ], + [ + 6.0598376, + 50.7831483 + ], + [ + 6.0597727, + 50.7830892 + ] + ] + ] + }, + "id": "way/147156156" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156157", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "55", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0605773, + 50.7828364 + ], + [ + 6.060547, + 50.7828064 + ], + [ + 6.0604962, + 50.7827637 + ], + [ + 6.0604682, + 50.7827357 + ], + [ + 6.0605465, + 50.7827016 + ], + [ + 6.0605637, + 50.7827175 + ], + [ + 6.0606035, + 50.7827001 + ], + [ + 6.060627, + 50.7827218 + ], + [ + 6.0606572, + 50.7827087 + ], + [ + 6.0607244, + 50.7827724 + ], + [ + 6.0605773, + 50.7828364 + ] + ] + ] + }, + "id": "way/147156157" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156161", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "3", + "addr:postcode": "52074", + "addr:street": "Hörnstieg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0577071, + 50.7834228 + ], + [ + 6.057785, + 50.7833906 + ], + [ + 6.0578791, + 50.7833516 + ], + [ + 6.0579514, + 50.7834219 + ], + [ + 6.0577795, + 50.7834931 + ], + [ + 6.0577071, + 50.7834228 + ] + ] + ] + }, + "id": "way/147156161" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156162", + "building": "garages" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.059796, + 50.7831667 + ], + [ + 6.0597311, + 50.7831076 + ], + [ + 6.0597727, + 50.7830892 + ], + [ + 6.0598376, + 50.7831483 + ], + [ + 6.059796, + 50.7831667 + ] + ] + ] + }, + "id": "way/147156162" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156168", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0594499, + 50.7832664 + ], + [ + 6.0594072, + 50.7832319 + ], + [ + 6.0594417, + 50.7832148 + ], + [ + 6.0594844, + 50.7832492 + ], + [ + 6.0594499, + 50.7832664 + ] + ] + ] + }, + "id": "way/147156168" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156169", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0593453, + 50.7836549 + ], + [ + 6.05939, + 50.7836908 + ], + [ + 6.0593786, + 50.7836965 + ], + [ + 6.0593284, + 50.7837216 + ], + [ + 6.0592842, + 50.783686 + ], + [ + 6.0593453, + 50.7836549 + ] + ] + ] + }, + "id": "way/147156169" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156171", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0585112, + 50.7840848 + ], + [ + 6.0584797, + 50.7840466 + ], + [ + 6.0585511, + 50.7840229 + ], + [ + 6.0585826, + 50.7840611 + ], + [ + 6.0585668, + 50.7840664 + ], + [ + 6.0585112, + 50.7840848 + ] + ] + ] + }, + "id": "way/147156171" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156172", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0589303, + 50.7839106 + ], + [ + 6.0588893, + 50.7838775 + ], + [ + 6.0589505, + 50.783847 + ], + [ + 6.0589915, + 50.7838802 + ], + [ + 6.0589728, + 50.7838894 + ], + [ + 6.0589303, + 50.7839106 + ] + ] + ] + }, + "id": "way/147156172" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156173", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0585021, + 50.7836466 + ], + [ + 6.058562, + 50.7836181 + ], + [ + 6.0586532, + 50.7836949 + ], + [ + 6.058594, + 50.7837231 + ], + [ + 6.0585653, + 50.7836981 + ], + [ + 6.0585021, + 50.7836466 + ] + ] + ] + }, + "id": "way/147156173" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156174", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0596956, + 50.7834868 + ], + [ + 6.0597614, + 50.7834536 + ], + [ + 6.0598011, + 50.7834853 + ], + [ + 6.0597858, + 50.783493 + ], + [ + 6.0597352, + 50.7835185 + ], + [ + 6.0596956, + 50.7834868 + ] + ] + ] + }, + "id": "way/147156174" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156175", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0593656, + 50.7832427 + ], + [ + 6.0593995, + 50.7832258 + ], + [ + 6.0594072, + 50.7832319 + ], + [ + 6.0594499, + 50.7832664 + ], + [ + 6.0594159, + 50.7832833 + ], + [ + 6.0593656, + 50.7832427 + ] + ] + ] + }, + "id": "way/147156175" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156176", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "67", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0594652, + 50.783194 + ], + [ + 6.0595185, + 50.783168 + ], + [ + 6.0595434, + 50.7831883 + ], + [ + 6.0595862, + 50.7831673 + ], + [ + 6.059659, + 50.7832268 + ], + [ + 6.059593, + 50.7832591 + ], + [ + 6.0595498, + 50.7832238 + ], + [ + 6.0595196, + 50.7832385 + ], + [ + 6.0594652, + 50.783194 + ] + ] + ] + }, + "id": "way/147156176" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156178", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "75a", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0586452, + 50.7835489 + ], + [ + 6.0587618, + 50.7836471 + ], + [ + 6.0586564, + 50.7836975 + ], + [ + 6.0586532, + 50.7836949 + ], + [ + 6.058562, + 50.7836181 + ], + [ + 6.0585397, + 50.7835993 + ], + [ + 6.0586452, + 50.7835489 + ] + ] + ] + }, + "id": "way/147156178" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156180", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "69", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0592231, + 50.7832963 + ], + [ + 6.0593428, + 50.783237 + ], + [ + 6.0594062, + 50.7832886 + ], + [ + 6.0593665, + 50.7833082 + ], + [ + 6.0594124, + 50.7833454 + ], + [ + 6.0593324, + 50.783385 + ], + [ + 6.0592537, + 50.7833212 + ], + [ + 6.0592231, + 50.7832963 + ] + ] + ] + }, + "id": "way/147156180" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156181", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "81", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0582885, + 50.7838752 + ], + [ + 6.0581895, + 50.7837935 + ], + [ + 6.0582895, + 50.7837428 + ], + [ + 6.0583442, + 50.783788 + ], + [ + 6.0583175, + 50.783799 + ], + [ + 6.0583654, + 50.7838384 + ], + [ + 6.0582885, + 50.7838752 + ] + ] + ] + }, + "id": "way/147156181" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156182", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "73", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0589125, + 50.7834803 + ], + [ + 6.0589584, + 50.7834591 + ], + [ + 6.0589437, + 50.7834463 + ], + [ + 6.058999, + 50.7834207 + ], + [ + 6.0590444, + 50.7834601 + ], + [ + 6.0590158, + 50.7834734 + ], + [ + 6.0590626, + 50.783514 + ], + [ + 6.0589899, + 50.7835476 + ], + [ + 6.0589125, + 50.7834803 + ] + ] + ] + }, + "id": "way/147156182" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156183", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "71", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0591301, + 50.7833574 + ], + [ + 6.0591807, + 50.7833324 + ], + [ + 6.0591997, + 50.7833479 + ], + [ + 6.0592537, + 50.7833212 + ], + [ + 6.0593324, + 50.783385 + ], + [ + 6.0592583, + 50.7834217 + ], + [ + 6.0592122, + 50.7833842 + ], + [ + 6.0591817, + 50.7833993 + ], + [ + 6.0591301, + 50.7833574 + ] + ] + ] + }, + "id": "way/147156183" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147156185", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "1", + "addr:postcode": "52074", + "addr:street": "Hörnstieg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0578464, + 50.7835591 + ], + [ + 6.0579707, + 50.7835089 + ], + [ + 6.0579815, + 50.7835196 + ], + [ + 6.0581064, + 50.7834692 + ], + [ + 6.0582109, + 50.7835733 + ], + [ + 6.0580809, + 50.7836258 + ], + [ + 6.0580369, + 50.7835819 + ], + [ + 6.0579177, + 50.7836301 + ], + [ + 6.0578464, + 50.7835591 + ] + ] + ] + }, + "id": "way/147156185" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147215963", + "building": "garages" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0573453, + 50.7827976 + ], + [ + 6.0574325, + 50.7827883 + ], + [ + 6.057464, + 50.7829079 + ], + [ + 6.0573767, + 50.7829171 + ], + [ + 6.0573453, + 50.7827976 + ] + ] + ] + }, + "id": "way/147215963" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147215972", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0569407, + 50.7831676 + ], + [ + 6.056941, + 50.7831168 + ], + [ + 6.0569357, + 50.7831168 + ], + [ + 6.0569357, + 50.7831061 + ], + [ + 6.0569813, + 50.7831061 + ], + [ + 6.0569814, + 50.7831676 + ], + [ + 6.0569407, + 50.7831676 + ] + ] + ] + }, + "id": "way/147215972" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147215983", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "3", + "addr:postcode": "52074", + "addr:street": "An den Finkenweiden", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0571578, + 50.7832882 + ], + [ + 6.0570726, + 50.7832921 + ], + [ + 6.057064, + 50.7832155 + ], + [ + 6.0571146, + 50.783213 + ], + [ + 6.0571133, + 50.7832002 + ], + [ + 6.0571117, + 50.783185 + ], + [ + 6.0570857, + 50.7831859 + ], + [ + 6.0570796, + 50.7831436 + ], + [ + 6.0571403, + 50.7831409 + ], + [ + 6.0571578, + 50.7832882 + ] + ] + ] + }, + "id": "way/147215983" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147283615", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "83", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "house", + "building:levels": "2", + "roof:levels": "1", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0577064, + 50.7839202 + ], + [ + 6.0578086, + 50.7838855 + ], + [ + 6.0578229, + 50.7838806 + ], + [ + 6.0579084, + 50.7839813 + ], + [ + 6.0577909, + 50.7840212 + ], + [ + 6.0577697, + 50.7839963 + ], + [ + 6.057756, + 50.784001 + ], + [ + 6.0577181, + 50.7839564 + ], + [ + 6.0577329, + 50.7839514 + ], + [ + 6.0577064, + 50.7839202 + ] + ] + ] + }, + "id": "way/147283615" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147283621", + "building": "carport" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0575376, + 50.7838109 + ], + [ + 6.0576202, + 50.7837822 + ], + [ + 6.0576631, + 50.7838308 + ], + [ + 6.0576185, + 50.7838459 + ], + [ + 6.0575808, + 50.7838609 + ], + [ + 6.0575376, + 50.7838109 + ] + ] + ] + }, + "id": "way/147283621" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147283626", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "85", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "apartments", + "building:levels": "2", + "roof:levels": "1", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0576032, + 50.7841106 + ], + [ + 6.057529, + 50.7840227 + ], + [ + 6.0575767, + 50.784007 + ], + [ + 6.0575677, + 50.7839962 + ], + [ + 6.0576339, + 50.783974 + ], + [ + 6.0577167, + 50.784073 + ], + [ + 6.0576032, + 50.7841106 + ] + ] + ] + }, + "id": "way/147283626" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147283632", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "89", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0571256, + 50.7842783 + ], + [ + 6.0570642, + 50.7842025 + ], + [ + 6.0571159, + 50.7841857 + ], + [ + 6.0570862, + 50.7841491 + ], + [ + 6.0571457, + 50.7841297 + ], + [ + 6.0572369, + 50.7842422 + ], + [ + 6.0571256, + 50.7842783 + ] + ] + ] + }, + "id": "way/147283632" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147542850", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0570279, + 50.7836539 + ], + [ + 6.0570295, + 50.7837027 + ], + [ + 6.0569885, + 50.7837033 + ], + [ + 6.056987, + 50.7836545 + ], + [ + 6.0570279, + 50.7836539 + ] + ] + ] + }, + "id": "way/147542850" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147542851", + "addr:city": "Aachen", + "addr:housenumber": "4", + "addr:postcode": "52074", + "addr:street": "Hörnstieg", + "building": "apartments", + "building:levels": "2" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0573871, + 50.7836947 + ], + [ + 6.0575195, + 50.7836275 + ], + [ + 6.057641, + 50.7837233 + ], + [ + 6.0575087, + 50.7837905 + ], + [ + 6.0573871, + 50.7836947 + ] + ] + ] + }, + "id": "way/147542851" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147542856", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0569665, + 50.7837799 + ], + [ + 6.0569649, + 50.7837313 + ], + [ + 6.0570304, + 50.7837305 + ], + [ + 6.0570307, + 50.7837414 + ], + [ + 6.0570319, + 50.783779 + ], + [ + 6.0569938, + 50.7837795 + ], + [ + 6.0569665, + 50.7837799 + ] + ] + ] + }, + "id": "way/147542856" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147542866", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0570307, + 50.7837414 + ], + [ + 6.0570304, + 50.7837305 + ], + [ + 6.0570295, + 50.7837027 + ], + [ + 6.0570279, + 50.7836539 + ], + [ + 6.0570817, + 50.7836533 + ], + [ + 6.0570845, + 50.7837407 + ], + [ + 6.0570307, + 50.7837414 + ] + ] + ] + }, + "id": "way/147542866" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147542878", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "4", + "addr:postcode": "52074", + "addr:street": "An den Finkenweiden", + "building": "semidetached_house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0571363, + 50.7835648 + ], + [ + 6.0572249, + 50.7835603 + ], + [ + 6.0572371, + 50.783677 + ], + [ + 6.057202, + 50.7836788 + ], + [ + 6.0571978, + 50.783645 + ], + [ + 6.0571468, + 50.7836476 + ], + [ + 6.0571436, + 50.7836306 + ], + [ + 6.0571363, + 50.7835648 + ] + ] + ] + }, + "id": "way/147542878" + }, + { + "type": "Feature", + "properties": { + "@id": "way/183902420", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0569938, + 50.7837795 + ], + [ + 6.0570319, + 50.783779 + ], + [ + 6.057034, + 50.7838315 + ], + [ + 6.0569953, + 50.7838324 + ], + [ + 6.0569938, + 50.7837795 + ] + ] + ] + }, + "id": "way/183902420" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886186", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0594776, + 50.782965 + ], + [ + 6.0595019, + 50.7829847 + ], + [ + 6.0594249, + 50.7830244 + ], + [ + 6.0593889, + 50.7829967 + ], + [ + 6.0594147, + 50.7829821 + ], + [ + 6.0594293, + 50.7829913 + ], + [ + 6.0594776, + 50.782965 + ] + ] + ] + }, + "id": "way/186886186" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886192", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0588444, + 50.7831915 + ], + [ + 6.058901, + 50.7831647 + ], + [ + 6.0589429, + 50.7832 + ], + [ + 6.0588862, + 50.7832268 + ], + [ + 6.0588444, + 50.7831915 + ] + ] + ] + }, + "id": "way/186886192" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886194", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0595743, + 50.7828847 + ], + [ + 6.0595465, + 50.7828616 + ], + [ + 6.0595876, + 50.7828419 + ], + [ + 6.0596154, + 50.7828649 + ], + [ + 6.0595743, + 50.7828847 + ] + ] + ] + }, + "id": "way/186886194" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886195", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0596748, + 50.7829506 + ], + [ + 6.0596117, + 50.7829008 + ], + [ + 6.0596959, + 50.7828581 + ], + [ + 6.0597511, + 50.7829017 + ], + [ + 6.059708, + 50.7829235 + ], + [ + 6.0597158, + 50.7829297 + ], + [ + 6.0596748, + 50.7829506 + ] + ] + ] + }, + "id": "way/186886195" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886197", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "59", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0582868, + 50.7827933 + ], + [ + 6.0583971, + 50.7827509 + ], + [ + 6.0584455, + 50.7828017 + ], + [ + 6.0584154, + 50.7828132 + ], + [ + 6.0584535, + 50.7828531 + ], + [ + 6.0583727, + 50.7828841 + ], + [ + 6.0582868, + 50.7827933 + ] + ] + ] + }, + "id": "way/186886197" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886199", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0587681, + 50.7833239 + ], + [ + 6.0587426, + 50.7833025 + ], + [ + 6.0587843, + 50.7832826 + ], + [ + 6.0588099, + 50.7833039 + ], + [ + 6.0587681, + 50.7833239 + ] + ] + ] + }, + "id": "way/186886199" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886202", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0594146, + 50.7829701 + ], + [ + 6.0593703, + 50.782937 + ], + [ + 6.0594213, + 50.7829133 + ], + [ + 6.059463, + 50.7829474 + ], + [ + 6.0594146, + 50.7829701 + ] + ] + ] + }, + "id": "way/186886202" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886204", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0595782, + 50.7828225 + ], + [ + 6.0596211, + 50.782803 + ], + [ + 6.059687, + 50.7828549 + ], + [ + 6.0596431, + 50.7828754 + ], + [ + 6.0595782, + 50.7828225 + ] + ] + ] + }, + "id": "way/186886204" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886208", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "44", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0587235, + 50.782857 + ], + [ + 6.0588001, + 50.7828198 + ], + [ + 6.0588496, + 50.7828607 + ], + [ + 6.0588714, + 50.7828512 + ], + [ + 6.0589213, + 50.7828915 + ], + [ + 6.0588753, + 50.7829148 + ], + [ + 6.0588548, + 50.7828993 + ], + [ + 6.0588054, + 50.7829233 + ], + [ + 6.0587235, + 50.782857 + ] + ] + ] + }, + "id": "way/186886208" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886214", + "building": "garages" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0579291, + 50.7828885 + ], + [ + 6.0580512, + 50.7828764 + ], + [ + 6.0580642, + 50.7829288 + ], + [ + 6.0579421, + 50.782941 + ], + [ + 6.0579291, + 50.7828885 + ] + ] + ] + }, + "id": "way/186886214" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886215", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0587118, + 50.7833061 + ], + [ + 6.0586839, + 50.7832823 + ], + [ + 6.0587548, + 50.7832491 + ], + [ + 6.0587827, + 50.7832729 + ], + [ + 6.0587118, + 50.7833061 + ] + ] + ] + }, + "id": "way/186886215" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886216", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0594249, + 50.7830244 + ], + [ + 6.0593877, + 50.7830438 + ], + [ + 6.0593516, + 50.783016 + ], + [ + 6.0593889, + 50.7829967 + ], + [ + 6.0594249, + 50.7830244 + ] + ] + ] + }, + "id": "way/186886216" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886217", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "42", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0590976, + 50.7827596 + ], + [ + 6.0590685, + 50.7827786 + ], + [ + 6.0591306, + 50.7828168 + ], + [ + 6.0590468, + 50.7828715 + ], + [ + 6.0588927, + 50.7827766 + ], + [ + 6.0590054, + 50.782703 + ], + [ + 6.0590976, + 50.7827596 + ] + ] + ] + }, + "id": "way/186886217" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886219", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0584365, + 50.782743 + ], + [ + 6.05841, + 50.7827233 + ], + [ + 6.058434, + 50.7827104 + ], + [ + 6.0584605, + 50.78273 + ], + [ + 6.0584365, + 50.782743 + ] + ] + ] + }, + "id": "way/186886219" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886220", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0586903, + 50.7833808 + ], + [ + 6.0586579, + 50.7833535 + ], + [ + 6.0587065, + 50.7833304 + ], + [ + 6.0587389, + 50.7833578 + ], + [ + 6.0586903, + 50.7833808 + ] + ] + ] + }, + "id": "way/186886220" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886221", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0577474, + 50.7833189 + ], + [ + 6.0577677, + 50.783372 + ], + [ + 6.0576873, + 50.7834042 + ], + [ + 6.0576698, + 50.7834119 + ], + [ + 6.057643, + 50.7833372 + ], + [ + 6.0576714, + 50.7833318 + ], + [ + 6.0577474, + 50.7833189 + ] + ] + ] + }, + "id": "way/186886221" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886222", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "57", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0586599, + 50.7827834 + ], + [ + 6.0585913, + 50.7828161 + ], + [ + 6.0585459, + 50.7827779 + ], + [ + 6.058512, + 50.7827941 + ], + [ + 6.0584618, + 50.7827518 + ], + [ + 6.0585102, + 50.7827288 + ], + [ + 6.0585265, + 50.7827425 + ], + [ + 6.0585801, + 50.782717 + ], + [ + 6.0586599, + 50.7827834 + ] + ] + ] + }, + "id": "way/186886222" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886228", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0593434, + 50.7830124 + ], + [ + 6.0593009, + 50.7829803 + ], + [ + 6.0593423, + 50.7829584 + ], + [ + 6.0593847, + 50.7829905 + ], + [ + 6.0593434, + 50.7830124 + ] + ] + ] + }, + "id": "way/186886228" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886229", + "building": "garage" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0577071, + 50.7834228 + ], + [ + 6.0576873, + 50.7834042 + ], + [ + 6.0577677, + 50.783372 + ], + [ + 6.057785, + 50.7833906 + ], + [ + 6.0577071, + 50.7834228 + ] + ] + ] + }, + "id": "way/186886229" + }, + { + "type": "Feature", + "properties": { + "@id": "way/186886237", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0582625, + 50.7832262 + ], + [ + 6.0582243, + 50.7831893 + ], + [ + 6.0582621, + 50.7831731 + ], + [ + 6.0583003, + 50.7832102 + ], + [ + 6.0582625, + 50.7832262 + ] + ] + ] + }, + "id": "way/186886237" + }, + { + "type": "Feature", + "properties": { + "@id": "way/187483354", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0568957, + 50.7829126 + ], + [ + 6.0568957, + 50.7828766 + ], + [ + 6.0569527, + 50.7828766 + ], + [ + 6.0569527, + 50.7829126 + ], + [ + 6.0568957, + 50.7829126 + ] + ] + ] + }, + "id": "way/187483354" + }, + { + "type": "Feature", + "properties": { + "@id": "way/187483385", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0571019, + 50.7828926 + ], + [ + 6.0570961, + 50.7828615 + ], + [ + 6.0571489, + 50.7828575 + ], + [ + 6.0571547, + 50.7828886 + ], + [ + 6.0571019, + 50.7828926 + ] + ] + ] + }, + "id": "way/187483385" + }, + { + "type": "Feature", + "properties": { + "@id": "way/187483419", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0569865, + 50.7827975 + ], + [ + 6.0570527, + 50.7827964 + ], + [ + 6.0570538, + 50.7828231 + ], + [ + 6.0569876, + 50.7828242 + ], + [ + 6.0569865, + 50.7827975 + ] + ] + ] + }, + "id": "way/187483419" + }, + { + "type": "Feature", + "properties": { + "@id": "way/189993215", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "91", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0571256, + 50.7842783 + ], + [ + 6.0569596, + 50.784332 + ], + [ + 6.0568895, + 50.784244 + ], + [ + 6.0568754, + 50.7842264 + ], + [ + 6.0569566, + 50.7842005 + ], + [ + 6.0569796, + 50.7842293 + ], + [ + 6.0570642, + 50.7842025 + ], + [ + 6.0571256, + 50.7842783 + ] + ] + ] + }, + "id": "way/189993215" + }, + { + "type": "Feature", + "properties": { + "@id": "way/189993216", + "building": "garages" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0572416, + 50.7842088 + ], + [ + 6.0571869, + 50.784143 + ], + [ + 6.0572617, + 50.7841181 + ], + [ + 6.0573244, + 50.7841935 + ], + [ + 6.0572846, + 50.7842067 + ], + [ + 6.0572766, + 50.7841972 + ], + [ + 6.0572416, + 50.7842088 + ] + ] + ] + }, + "id": "way/189993216" + }, + { + "type": "Feature", + "properties": { + "@id": "way/189993463", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "2", + "addr:postcode": "52074", + "addr:street": "Hörnstieg", + "building": "office" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0576185, + 50.7838459 + ], + [ + 6.0576631, + 50.7838308 + ], + [ + 6.05774, + 50.7838047 + ], + [ + 6.0578086, + 50.7838855 + ], + [ + 6.0577064, + 50.7839202 + ], + [ + 6.0576741, + 50.7838822 + ], + [ + 6.0576549, + 50.7838888 + ], + [ + 6.0576185, + 50.7838459 + ] + ] + ] + }, + "id": "way/189993463" + }, + { + "type": "Feature", + "properties": { + "@id": "way/189993464", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "85a", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "apartments", + "building:levels": "2", + "roof:levels": "1", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.057529, + 50.7840227 + ], + [ + 6.0576032, + 50.7841106 + ], + [ + 6.0574849, + 50.7841498 + ], + [ + 6.0574108, + 50.7840617 + ], + [ + 6.057529, + 50.7840227 + ] + ] + ] + }, + "id": "way/189993464" + }, + { + "type": "Feature", + "properties": { + "@id": "way/189993465", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "87", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "apartments", + "building:levels": "2", + "roof:levels": "1", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0574108, + 50.7840617 + ], + [ + 6.0574849, + 50.7841498 + ], + [ + 6.057372, + 50.7841877 + ], + [ + 6.057298, + 50.7840996 + ], + [ + 6.0574108, + 50.7840617 + ] + ] + ] + }, + "id": "way/189993465" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907639", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "53", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0606572, + 50.7827087 + ], + [ + 6.0606906, + 50.7826941 + ], + [ + 6.0606653, + 50.7826708 + ], + [ + 6.0607723, + 50.7826242 + ], + [ + 6.060866, + 50.7827107 + ], + [ + 6.0607244, + 50.7827724 + ], + [ + 6.0606572, + 50.7827087 + ] + ] + ] + }, + "id": "way/218907639" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907640", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "57", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0603013, + 50.7828642 + ], + [ + 6.0603543, + 50.7828377 + ], + [ + 6.0603384, + 50.7828249 + ], + [ + 6.0603861, + 50.7828011 + ], + [ + 6.0604348, + 50.782842 + ], + [ + 6.06041, + 50.7828544 + ], + [ + 6.0604567, + 50.782892 + ], + [ + 6.0603817, + 50.7829295 + ], + [ + 6.0603013, + 50.7828642 + ] + ] + ] + }, + "id": "way/218907640" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907642", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "81a", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0581895, + 50.7837935 + ], + [ + 6.0582885, + 50.7838752 + ], + [ + 6.0582176, + 50.7839095 + ], + [ + 6.0581186, + 50.7838278 + ], + [ + 6.0581895, + 50.7837935 + ] + ] + ] + }, + "id": "way/218907642" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907643", + "building": "hut" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.05839, + 50.7835586 + ], + [ + 6.058365, + 50.7835358 + ], + [ + 6.0584227, + 50.7835104 + ], + [ + 6.0584477, + 50.7835332 + ], + [ + 6.05839, + 50.7835586 + ] + ] + ] + }, + "id": "way/218907643" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907644", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "61", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0599619, + 50.783025 + ], + [ + 6.0600159, + 50.7829998 + ], + [ + 6.0599987, + 50.782985 + ], + [ + 6.0600477, + 50.7829622 + ], + [ + 6.0600953, + 50.7830033 + ], + [ + 6.060069, + 50.7830156 + ], + [ + 6.0601178, + 50.7830577 + ], + [ + 6.0600391, + 50.7830943 + ], + [ + 6.0599619, + 50.783025 + ] + ] + ] + }, + "id": "way/218907644" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907645", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "65", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "semidetached_house", + "building:levels": "1", + "roof:levels": "2", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0595862, + 50.7831673 + ], + [ + 6.0596472, + 50.783135 + ], + [ + 6.0596178, + 50.7831119 + ], + [ + 6.0596704, + 50.7830852 + ], + [ + 6.0597119, + 50.7831178 + ], + [ + 6.05968, + 50.7831341 + ], + [ + 6.0597459, + 50.7831859 + ], + [ + 6.059659, + 50.7832268 + ], + [ + 6.0595862, + 50.7831673 + ] + ] + ] + }, + "id": "way/218907645" + }, + { + "type": "Feature", + "properties": { + "@id": "way/218907646", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "79", + "addr:postcode": "52074", + "addr:street": "Seffenter Weg", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0584165, + 50.7837102 + ], + [ + 6.0584943, + 50.7837745 + ], + [ + 6.0584191, + 50.7838109 + ], + [ + 6.0583739, + 50.7837736 + ], + [ + 6.0583442, + 50.783788 + ], + [ + 6.0582895, + 50.7837428 + ], + [ + 6.0583217, + 50.7837273 + ], + [ + 6.0583437, + 50.7837454 + ], + [ + 6.0584165, + 50.7837102 + ] + ] + ] + }, + "id": "way/218907646" + }, + { + "type": "Feature", + "properties": { + "@id": "way/219828598", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0572801, + 50.7836748 + ], + [ + 6.0572916, + 50.7836755 + ], + [ + 6.0573068, + 50.7837702 + ], + [ + 6.057254, + 50.7837756 + ], + [ + 6.0572371, + 50.783677 + ], + [ + 6.0572801, + 50.7836748 + ] + ] + ] + }, + "id": "way/219828598" + }, + { + "type": "Feature", + "properties": { + "@id": "way/219828600", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "2", + "addr:postcode": "52074", + "addr:street": "An den Finkenweiden", + "building": "semidetached_house" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0572249, + 50.7835603 + ], + [ + 6.0573085, + 50.783556 + ], + [ + 6.0573183, + 50.7836335 + ], + [ + 6.0572947, + 50.7836347 + ], + [ + 6.0572751, + 50.7836357 + ], + [ + 6.0572801, + 50.7836748 + ], + [ + 6.0572371, + 50.783677 + ], + [ + 6.0572249, + 50.7835603 + ] + ] + ] + }, + "id": "way/219828600" + }, + { + "type": "Feature", + "properties": { + "@id": "way/219828605", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.057254, + 50.7837756 + ], + [ + 6.0571695, + 50.7837798 + ], + [ + 6.0571575, + 50.7836874 + ], + [ + 6.0572031, + 50.7836849 + ], + [ + 6.057202, + 50.7836788 + ], + [ + 6.0572371, + 50.783677 + ], + [ + 6.057254, + 50.7837756 + ] + ] + ] + }, + "id": "way/219828605" + }, + { + "type": "Feature", + "properties": { + "@id": "way/219916938", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "1", + "addr:postcode": "52074", + "addr:street": "An den Finkenweiden", + "building": "yes" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0571578, + 50.7832882 + ], + [ + 6.0571403, + 50.7831409 + ], + [ + 6.0572519, + 50.7831358 + ], + [ + 6.057262, + 50.7832246 + ], + [ + 6.0572423, + 50.7832255 + ], + [ + 6.0572431, + 50.7832352 + ], + [ + 6.0572489, + 50.7832841 + ], + [ + 6.0571578, + 50.7832882 + ] + ] + ] + }, + "id": "way/219916938" + }, + { + "type": "Feature", + "properties": { + "@id": "way/239429004", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "63", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "apartments", + "building:levels": "2", + "roof:colour": "grey", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0577034, + 50.7829254 + ], + [ + 6.057834, + 50.7829106 + ], + [ + 6.0578461, + 50.7829494 + ], + [ + 6.0578566, + 50.7829867 + ], + [ + 6.0577252, + 50.7830017 + ], + [ + 6.0577034, + 50.7829254 + ] + ] + ] + }, + "id": "way/239429004" + }, + { + "type": "Feature", + "properties": { + "@id": "way/239429005", + "addr:city": "Aachen", + "addr:country": "DE", + "addr:housenumber": "65", + "addr:postcode": "52074", + "addr:street": "Hörnhang", + "building": "apartments", + "building:levels": "2", + "roof:colour": "grey", + "roof:shape": "gabled" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 6.0577252, + 50.7830017 + ], + [ + 6.0576576, + 50.7830098 + ], + [ + 6.0575937, + 50.7830167 + ], + [ + 6.0575728, + 50.7829402 + ], + [ + 6.0577034, + 50.7829254 + ], + [ + 6.0577252, + 50.7830017 + ] + ] + ] + }, + "id": "way/239429005" + }, + { + "type": "Feature", + "properties": { + "@id": "way/8028255", + "bicycle": "yes", + "foot": "yes", + "highway": "living_street", + "lit": "yes", + "name": "Seffenter Weg", + "name:etymology:wikidata": "Q2097161", + "source": "image", + "surface": "paving_stones" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0581453, + 50.7840116 + ], + [ + 6.0584415, + 50.7838943 + ], + [ + 6.0585907, + 50.7838324 + ], + [ + 6.0591573, + 50.7835686 + ], + [ + 6.0595384, + 50.7833815 + ], + [ + 6.0597673, + 50.7832705 + ], + [ + 6.0599424, + 50.7832002 + ], + [ + 6.0602353, + 50.7830674 + ], + [ + 6.0605946, + 50.7829044 + ], + [ + 6.060657, + 50.7829536 + ] + ] + }, + "id": "way/8028255" + }, + { + "type": "Feature", + "properties": { + "@id": "way/8028256", + "highway": "residential", + "lit": "yes", + "maxspeed": "30", + "name": "Hörnhang", + "note": "Einfahrtsbeschränkung nur in Richtung Hörnstieg ausgeschildert", + "surface": "asphalt", + "vehicle:backward": "destination" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0573833, + 50.7831826 + ], + [ + 6.0575113, + 50.7831612 + ], + [ + 6.0578504, + 50.7831044 + ], + [ + 6.0581165, + 50.7830514 + ], + [ + 6.0583294, + 50.7829918 + ], + [ + 6.0587031, + 50.7828334 + ], + [ + 6.0590825, + 50.7826148 + ], + [ + 6.0595912, + 50.782249 + ], + [ + 6.0598066, + 50.7821128 + ], + [ + 6.060008, + 50.7820149 + ], + [ + 6.060054, + 50.7819925 + ], + [ + 6.0603394, + 50.7818917 + ], + [ + 6.0605082, + 50.7818427 + ], + [ + 6.0606994, + 50.7818003 + ], + [ + 6.0609157, + 50.7817741 + ], + [ + 6.0610106, + 50.7817626 + ], + [ + 6.0612303, + 50.7817547 + ], + [ + 6.0614191, + 50.7817566 + ], + [ + 6.0615906, + 50.7817698 + ], + [ + 6.061809, + 50.7817998 + ], + [ + 6.0620338, + 50.7818471 + ], + [ + 6.0622274, + 50.7818997 + ], + [ + 6.0624143, + 50.7819741 + ], + [ + 6.0624678, + 50.7819973 + ], + [ + 6.0626248, + 50.7820961 + ], + [ + 6.0627376, + 50.7821865 + ], + [ + 6.0628136, + 50.7822787 + ], + [ + 6.0628277, + 50.7822957 + ], + [ + 6.0628915, + 50.7823678 + ] + ] + }, + "id": "way/8028256" + }, + { + "type": "Feature", + "properties": { + "@id": "way/8028257", + "cycleway:both": "no", + "highway": "residential", + "lit": "yes", + "maxspeed": "30", + "motorcar:backward": "destination", + "motorcycle:backward": "destination", + "name": "An den Finkenweiden", + "note": "Einfahrtsbeschränkung nur in Richtung Hörnstieg ausgeschildert", + "sidewalk": "both", + "surface": "asphalt" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0574803, + 50.7834648 + ], + [ + 6.0571106, + 50.7834848 + ], + [ + 6.0565977, + 50.783485 + ], + [ + 6.0559676, + 50.7834087 + ], + [ + 6.0555469, + 50.7833073 + ], + [ + 6.0552155, + 50.783184 + ], + [ + 6.0549953, + 50.783089 + ], + [ + 6.0547155, + 50.782937 + ], + [ + 6.0544587, + 50.7827703 + ], + [ + 6.0542366, + 50.7825632 + ], + [ + 6.0540916, + 50.7823912 + ], + [ + 6.0539719, + 50.7822107 + ], + [ + 6.0537886, + 50.7819209 + ], + [ + 6.0537629, + 50.7818586 + ] + ] + }, + "id": "way/8028257" + }, + { + "type": "Feature", + "properties": { + "@id": "way/9182668", + "highway": "residential", + "lit": "yes", + "maxspeed": "30", + "name": "Hörnstieg", + "surface": "asphalt", + "vehicle": "destination" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0582157, + 50.7840594 + ], + [ + 6.0581453, + 50.7840116 + ], + [ + 6.0581179, + 50.7839928 + ], + [ + 6.0575797, + 50.783623 + ], + [ + 6.0574803, + 50.7834648 + ], + [ + 6.0573833, + 50.7831826 + ], + [ + 6.0572573, + 50.7827732 + ], + [ + 6.0571672, + 50.7824807 + ], + [ + 6.0571178, + 50.7823202 + ] + ] + }, + "id": "way/9182668" + }, + { + "type": "Feature", + "properties": { + "@id": "way/75221792", + "bicycle": "yes", + "hgv": "no", + "highway": "tertiary", + "lanes": "2", + "lit": "yes", + "maxspeed": "30", + "name": "Seffenter Weg", + "name:etymology:wikidata": "Q2097161", + "shoulder": "no", + "surface": "asphalt", + "zone:maxspeed": "DE:30" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0549145, + 50.7853459 + ], + [ + 6.0550531, + 50.7852585 + ], + [ + 6.0551851, + 50.785171 + ], + [ + 6.0553383, + 50.7850723 + ], + [ + 6.0553876, + 50.7850422 + ], + [ + 6.0554954, + 50.7849814 + ], + [ + 6.0556079, + 50.7849251 + ], + [ + 6.0561664, + 50.7847179 + ], + [ + 6.0573576, + 50.7843197 + ], + [ + 6.057428, + 50.7842977 + ], + [ + 6.0579104, + 50.7841469 + ], + [ + 6.0581149, + 50.7840889 + ], + [ + 6.0582157, + 50.7840594 + ], + [ + 6.0583887, + 50.7839995 + ], + [ + 6.0587286, + 50.7838598 + ], + [ + 6.0587869, + 50.7838323 + ], + [ + 6.0591738, + 50.7836499 + ], + [ + 6.0596066, + 50.7834458 + ], + [ + 6.0605651, + 50.7829939 + ], + [ + 6.060657, + 50.7829536 + ], + [ + 6.0609983, + 50.7828039 + ], + [ + 6.0613656, + 50.7827012 + ], + [ + 6.0624412, + 50.7824725 + ], + [ + 6.0628915, + 50.7823678 + ], + [ + 6.0631852, + 50.7822965 + ], + [ + 6.0633257, + 50.7822594 + ], + [ + 6.0638828, + 50.7821114 + ], + [ + 6.0643662, + 50.7819865 + ], + [ + 6.0644059, + 50.7819756 + ], + [ + 6.0645811, + 50.7819271 + ] + ] + }, + "id": "way/75221792" + }, + { + "type": "Feature", + "properties": { + "@id": "way/127204147", + "access": "private", + "highway": "service" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0608202, + 50.7833132 + ], + [ + 6.0605961, + 50.7830283 + ], + [ + 6.0605651, + 50.7829939 + ] + ] + }, + "id": "way/127204147" + }, + { + "type": "Feature", + "properties": { + "@id": "way/147150983", + "access": "private", + "highway": "service" + }, + "geometry": { + "type": "LineString", + "coordinates": [ + [ + 6.0621632, + 50.7828901 + ], + [ + 6.0608202, + 50.7833132 + ], + [ + 6.0602969, + 50.7834994 + ] + ] + }, + "id": "way/147150983" + } + ] +} \ No newline at end of file -- GitLab