diff --git a/ohsome_quality_api/indicators/attribute_completeness/indicator.py b/ohsome_quality_api/indicators/attribute_completeness/indicator.py index a7416ae8c..2884be6ca 100644 --- a/ohsome_quality_api/indicators/attribute_completeness/indicator.py +++ b/ohsome_quality_api/indicators/attribute_completeness/indicator.py @@ -1,6 +1,5 @@ import logging from string import Template -from typing import List import dateutil.parser import plotly.graph_objects as go @@ -24,8 +23,10 @@ class AttributeCompleteness(BaseIndicator): Terminology: topic: Category of map features. Translates to a ohsome filter. - attribute: Additional (expected) tag(s) describing a map feature. Translates to - a ohsome filter. + attribute: Additional (expected) tag(s) describing a map feature. + attribute_keys: a set of predefined attributes wich will be + translated to an ohsome filter + attribute_filter: a custom ohsome filter Example: How many buildings (topic) have height information (attribute)? @@ -40,23 +41,45 @@ def __init__( self, topic: Topic, feature: Feature, - attribute_keys: List[str] = None, + attribute_keys: list[str] | None = None, + attribute_filter: str | None = None, + attribute_names: list[str] | None = None, ) -> None: super().__init__(topic=topic, feature=feature) self.threshold_yellow = 0.75 self.threshold_red = 0.25 self.attribute_keys = attribute_keys + self.attribute_filter = attribute_filter + self.attribute_names = attribute_names self.absolute_value_1 = None self.absolute_value_2 = None self.description = None + # fmt: off + # TODO: Remove once validated by pydantic request model + if ( + all(v is None for v in (attribute_keys, attribute_filter)) or + all(v is not None for v in (attribute_keys, attribute_filter)) + ): + raise TypeError( + "Either `attribute_keys` or `attribute_filter` needs to be given" + ) + # fmt: on + if self.attribute_keys: + self.attribute_filter = build_attribute_filter( + self.attribute_keys, + self.topic.key, + ) + self.attribute_names = [ + get_attribute(self.topic.key, k).name.lower() + for k in self.attribute_keys + ] async def preprocess(self) -> None: - attribute = build_attribute_filter(self.attribute_keys, self.topic.key) # Get attribute filter response = await ohsome_client.query( self.topic, self.feature, - attribute_filter=attribute, + attribute_filter=self.attribute_filter, ) timestamp = response["ratioResult"][0]["timestamp"] self.result.timestamp_osm = dateutil.parser.isoparse(timestamp) @@ -90,19 +113,21 @@ def calculate(self) -> None: ) def create_description(self): - attribute_names = [ - get_attribute(self.topic.key, attribute_key).name.lower() - for attribute_key in self.attribute_keys - ] all, matched = self.compute_units_for_all_and_matched() + if self.result.value is None: + raise TypeError("result value should not be None") + else: + result = round(self.result.value * 100, 1) + if len(self.attribute_names) > 1: + tags = "attributes " + ", ".join(self.attribute_names) + else: + tags = "attribute " + self.attribute_names[0] self.description = Template(self.templates.result_description).substitute( - result=round(self.result.value * 100, 1), + result=result, all=all, matched=matched, topic=self.topic.name.lower(), - tags="attributes " + ", ".join(attribute_names) - if len(attribute_names) > 1 - else "attribute " + attribute_names[0], + tags=tags, ) def create_figure(self) -> None: diff --git a/tests/conftest.py b/tests/conftest.py index bcee3fea8..65f3c62f1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -136,15 +136,27 @@ def attribute() -> Attribute: @pytest.fixture(scope="class") -def attribute_key() -> str: +def attribute_key() -> list[str]: return ["height"] @pytest.fixture(scope="class") -def attribute_key_multiple() -> str: +def attribute_key_multiple() -> list[str]: return ["height", "house-number"] +@pytest.fixture +def attribute_filter() -> str: + """Custom attribute filter.""" + return "height=* or building:levels=*" + + +@pytest.fixture +def attribute_names() -> list[str]: + """Attributes names belonging to custom attribute filter (`attribute_filter)`.""" + return ["Height"] + + @pytest.fixture(scope="class") def feature_germany_heidelberg() -> Feature: path = os.path.join( diff --git a/tests/integrationtests/fixtures/approved/test_attribute_completeness-TestFigure-test_create_figure-indicator0 (setup).approved.txt b/tests/integrationtests/fixtures/approved/test_attribute_completeness-TestFigure-test_create_figure-indicator0 (setup).approved.txt new file mode 100644 index 000000000..0dc176571 --- /dev/null +++ b/tests/integrationtests/fixtures/approved/test_attribute_completeness-TestFigure-test_create_figure-indicator0 (setup).approved.txt @@ -0,0 +1 @@ +28.8% of all "building count" features (all: 29936 elements) in your area of interest have the selected additional attribute height of buildings (matched: 8630 elements). diff --git a/tests/integrationtests/fixtures/approved/test_attribute_completeness-TestFigure-test_create_figure-indicator1 (setup).approved.txt b/tests/integrationtests/fixtures/approved/test_attribute_completeness-TestFigure-test_create_figure-indicator1 (setup).approved.txt new file mode 100644 index 000000000..27557fc5b --- /dev/null +++ b/tests/integrationtests/fixtures/approved/test_attribute_completeness-TestFigure-test_create_figure-indicator1 (setup).approved.txt @@ -0,0 +1 @@ +59.7% of all "building count" features (all: 30237 elements) in your area of interest have the selected additional attribute Height (matched: 18057 elements). diff --git a/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_filter.approved.txt b/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_filter.approved.txt new file mode 100644 index 000000000..7f23a29f3 --- /dev/null +++ b/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_filter.approved.txt @@ -0,0 +1 @@ +20.0% of all "building count" features (all: 10 elements) in your area of interest have the selected additional attribute Height (matched: 2 elements). diff --git a/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_keys_multiple.approved.txt b/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_keys_multiple.approved.txt new file mode 100644 index 000000000..5e637d185 --- /dev/null +++ b/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_keys_multiple.approved.txt @@ -0,0 +1 @@ +20.0% of all "building count" features (all: 10 elements) in your area of interest have the selected additional attributes height of buildings, house number, street address (matched: 2 elements). diff --git a/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_keys_single.approved.txt b/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_keys_single.approved.txt new file mode 100644 index 000000000..6b1b4b52a --- /dev/null +++ b/tests/integrationtests/fixtures/approved/test_attribute_completeness-test_create_description_attribute_keys_single.approved.txt @@ -0,0 +1 @@ +20.0% of all "building count" features (all: 10 elements) in your area of interest have the selected additional attribute height of buildings (matched: 2 elements). diff --git a/tests/integrationtests/fixtures/vcr_cassettes/indicators/test_attribute_completeness.yaml b/tests/integrationtests/fixtures/vcr_cassettes/indicators/test_attribute_completeness.yaml index 5488fe630..95fa7c5eb 100644 --- a/tests/integrationtests/fixtures/vcr_cassettes/indicators/test_attribute_completeness.yaml +++ b/tests/integrationtests/fixtures/vcr_cassettes/indicators/test_attribute_completeness.yaml @@ -575,4 +575,1862 @@ interactions: - accept-encoding http_version: HTTP/1.1 status_code: 200 +- request: + body: filter=building%3D%2A+and+building%21%3Dno+and+geometry%3Apolygon&bpolys=%7B%22type%22%3A+%22FeatureCollection%22%2C+%22features%22%3A+%5B%7B%22type%22%3A+%22Feature%22%2C+%22geometry%22%3A+%7B%22type%22%3A+%22Polygon%22%2C+%22coordinates%22%3A+%5B%5B%5B8.573179%2C+49.4236%5D%2C+%5B8.573244%2C+49.423266%5D%2C+%5B8.573517%2C+49.421746%5D%2C+%5B8.573602%2C+49.421029%5D%2C+%5B8.57363%2C+49.420766%5D%2C+%5B8.573618%2C+49.420478%5D%2C+%5B8.573575%2C+49.420208%5D%2C+%5B8.573487%2C+49.419852%5D%2C+%5B8.573253%2C+49.419103%5D%2C+%5B8.57328%2C+49.418634%5D%2C+%5B8.573262%2C+49.41846%5D%2C+%5B8.573244%2C+49.418239%5D%2C+%5B8.573233%2C+49.418026%5D%2C+%5B8.573211%2C+49.417562%5D%2C+%5B8.573206%2C+49.417217%5D%2C+%5B8.573223%2C+49.416902%5D%2C+%5B8.573288%2C+49.416518%5D%2C+%5B8.57343%2C+49.415763%5D%2C+%5B8.573622%2C+49.415734%5D%2C+%5B8.57398%2C+49.414723%5D%2C+%5B8.574098%2C+49.414422%5D%2C+%5B8.574905%2C+49.412659%5D%2C+%5B8.575126%2C+49.41262%5D%2C+%5B8.575952%2C+49.412479%5D%2C+%5B8.576355%2C+49.412403%5D%2C+%5B8.576806%2C+49.412309%5D%2C+%5B8.577418%2C+49.412162%5D%2C+%5B8.578871%2C+49.411816%5D%2C+%5B8.580327%2C+49.411477%5D%2C+%5B8.580548%2C+49.411425%5D%2C+%5B8.581021%2C+49.411314%5D%2C+%5B8.581467%2C+49.411198%5D%2C+%5B8.582126%2C+49.411021%5D%2C+%5B8.58281%2C+49.410831%5D%2C+%5B8.583621%2C+49.410604%5D%2C+%5B8.584256%2C+49.41041%5D%2C+%5B8.584461%2C+49.410598%5D%2C+%5B8.584601%2C+49.41074%5D%2C+%5B8.58466%2C+49.410809%5D%2C+%5B8.584729%2C+49.410896%5D%2C+%5B8.584841%2C+49.411043%5D%2C+%5B8.584893%2C+49.411041%5D%2C+%5B8.590664%2C+49.410551%5D%2C+%5B8.592504%2C+49.410392%5D%2C+%5B8.59249%2C+49.410325%5D%2C+%5B8.592557%2C+49.410316%5D%2C+%5B8.592992%2C+49.410285%5D%2C+%5B8.594295%2C+49.410194%5D%2C+%5B8.595027%2C+49.410131%5D%2C+%5B8.595718%2C+49.41008%5D%2C+%5B8.596457%2C+49.410013%5D%2C+%5B8.597109%2C+49.409948%5D%2C+%5B8.597817%2C+49.409869%5D%2C+%5B8.598479%2C+49.409799%5D%2C+%5B8.59864%2C+49.409784%5D%2C+%5B8.600522%2C+49.409526%5D%2C+%5B8.603393%2C+49.409127%5D%2C+%5B8.60354%2C+49.409104%5D%2C+%5B8.603638%2C+49.409079%5D%2C+%5B8.6052%2C+49.408456%5D%2C+%5B8.608794%2C+49.407045%5D%2C+%5B8.610673%2C+49.405949%5D%2C+%5B8.611461%2C+49.405467%5D%2C+%5B8.612437%2C+49.406203%5D%2C+%5B8.616606%2C+49.407383%5D%2C+%5B8.622553%2C+49.409046%5D%2C+%5B8.622627%2C+49.40901%5D%2C+%5B8.622648%2C+49.408953%5D%2C+%5B8.62272%2C+49.408975%5D%2C+%5B8.622722%2C+49.408976%5D%2C+%5B8.622791%2C+49.409015%5D%2C+%5B8.622851%2C+49.409049%5D%2C+%5B8.623189%2C+49.409236%5D%2C+%5B8.624498%2C+49.409957%5D%2C+%5B8.62459%2C+49.410009%5D%2C+%5B8.625101%2C+49.410294%5D%2C+%5B8.625378%2C+49.410448%5D%2C+%5B8.625911%2C+49.410745%5D%2C+%5B8.626324%2C+49.410975%5D%2C+%5B8.626979%2C+49.411341%5D%2C+%5B8.628263%2C+49.412032%5D%2C+%5B8.62859%2C+49.412213%5D%2C+%5B8.629072%2C+49.412486%5D%2C+%5B8.630034%2C+49.413176%5D%2C+%5B8.630959%2C+49.413833%5D%2C+%5B8.632078%2C+49.414583%5D%2C+%5B8.632707%2C+49.415007%5D%2C+%5B8.632748%2C+49.415035%5D%2C+%5B8.632938%2C+49.414961%5D%2C+%5B8.633025%2C+49.414928%5D%2C+%5B8.633075%2C+49.414807%5D%2C+%5B8.63406%2C+49.412449%5D%2C+%5B8.634446%2C+49.411487%5D%2C+%5B8.634737%2C+49.410763%5D%2C+%5B8.635407%2C+49.409092%5D%2C+%5B8.635873%2C+49.407932%5D%2C+%5B8.636033%2C+49.40753%5D%2C+%5B8.636136%2C+49.407242%5D%2C+%5B8.636215%2C+49.406957%5D%2C+%5B8.636379%2C+49.406391%5D%2C+%5B8.636465%2C+49.406041%5D%2C+%5B8.636591%2C+49.405566%5D%2C+%5B8.636667%2C+49.405073%5D%2C+%5B8.636706%2C+49.404806%5D%2C+%5B8.636743%2C+49.404552%5D%2C+%5B8.636827%2C+49.403969%5D%2C+%5B8.6369%2C+49.403462%5D%2C+%5B8.636926%2C+49.403268%5D%2C+%5B8.637017%2C+49.402596%5D%2C+%5B8.637222%2C+49.401141%5D%2C+%5B8.63755%2C+49.3988%5D%2C+%5B8.638008%2C+49.395648%5D%2C+%5B8.638186%2C+49.393813%5D%2C+%5B8.638295%2C+49.39272%5D%2C+%5B8.638521%2C+49.392746%5D%2C+%5B8.640722%2C+49.393021%5D%2C+%5B8.64343%2C+49.393381%5D%2C+%5B8.643512%2C+49.393194%5D%2C+%5B8.643527%2C+49.39316%5D%2C+%5B8.645535%2C+49.390884%5D%2C+%5B8.64636%2C+49.389866%5D%2C+%5B8.6475%2C+49.388537%5D%2C+%5B8.645357%2C+49.388044%5D%2C+%5B8.643807%2C+49.387609%5D%2C+%5B8.642091%2C+49.387149%5D%2C+%5B8.641038%2C+49.386841%5D%2C+%5B8.639916%2C+49.386498%5D%2C+%5B8.639667%2C+49.386434%5D%2C+%5B8.639387%2C+49.386413%5D%2C+%5B8.638662%2C+49.386411%5D%2C+%5B8.638086%2C+49.386573%5D%2C+%5B8.636604%2C+49.38704%5D%2C+%5B8.634926%2C+49.387313%5D%2C+%5B8.633683%2C+49.387185%5D%2C+%5B8.633598%2C+49.387174%5D%2C+%5B8.633542%2C+49.386897%5D%2C+%5B8.633434%2C+49.386227%5D%2C+%5B8.633401%2C+49.385899%5D%2C+%5B8.633366%2C+49.385891%5D%2C+%5B8.630199%2C+49.385201%5D%2C+%5B8.629858%2C+49.385107%5D%2C+%5B8.629436%2C+49.384945%5D%2C+%5B8.628851%2C+49.384706%5D%2C+%5B8.628366%2C+49.384445%5D%2C+%5B8.627801%2C+49.38413%5D%2C+%5B8.627122%2C+49.383729%5D%2C+%5B8.62646%2C+49.38335%5D%2C+%5B8.625986%2C+49.383068%5D%2C+%5B8.625383%2C+49.382699%5D%2C+%5B8.624878%2C+49.382387%5D%2C+%5B8.624241%2C+49.38199%5D%2C+%5B8.623785%2C+49.381668%5D%2C+%5B8.624382%2C+49.38067%5D%2C+%5B8.621112%2C+49.380011%5D%2C+%5B8.620378%2C+49.379843%5D%2C+%5B8.617932%2C+49.379283%5D%2C+%5B8.616155%2C+49.379158%5D%2C+%5B8.615294%2C+49.378918%5D%2C+%5B8.614545%2C+49.378758%5D%2C+%5B8.613751%2C+49.378528%5D%2C+%5B8.612581%2C+49.378202%5D%2C+%5B8.610866%2C+49.378017%5D%2C+%5B8.610186%2C+49.377919%5D%2C+%5B8.609757%2C+49.37785%5D%2C+%5B8.609403%2C+49.377756%5D%2C+%5B8.609066%2C+49.377649%5D%2C+%5B8.608678%2C+49.377505%5D%2C+%5B8.607916%2C+49.37721%5D%2C+%5B8.607342%2C+49.376972%5D%2C+%5B8.606882%2C+49.376751%5D%2C+%5B8.60681%2C+49.376163%5D%2C+%5B8.607222%2C+49.374986%5D%2C+%5B8.607484%2C+49.37429%5D%2C+%5B8.607333%2C+49.373851%5D%2C+%5B8.606536%2C+49.371886%5D%2C+%5B8.605798%2C+49.370097%5D%2C+%5B8.605168%2C+49.370272%5D%2C+%5B8.60321%2C+49.368377%5D%2C+%5B8.601004%2C+49.366203%5D%2C+%5B8.604393%2C+49.365577%5D%2C+%5B8.604307%2C+49.365419%5D%2C+%5B8.605479%2C+49.365214%5D%2C+%5B8.605885%2C+49.365159%5D%2C+%5B8.607155%2C+49.365004%5D%2C+%5B8.607562%2C+49.364962%5D%2C+%5B8.607787%2C+49.364932%5D%2C+%5B8.608004%2C+49.364857%5D%2C+%5B8.60823%2C+49.364779%5D%2C+%5B8.608521%2C+49.364676%5D%2C+%5B8.608763%2C+49.364589%5D%2C+%5B8.608975%2C+49.364526%5D%2C+%5B8.60924%2C+49.364461%5D%2C+%5B8.609518%2C+49.364418%5D%2C+%5B8.609797%2C+49.364361%5D%2C+%5B8.610128%2C+49.3643%5D%2C+%5B8.610354%2C+49.364251%5D%2C+%5B8.610605%2C+49.364179%5D%2C+%5B8.610995%2C+49.364053%5D%2C+%5B8.611555%2C+49.363849%5D%2C+%5B8.612129%2C+49.363662%5D%2C+%5B8.613637%2C+49.363103%5D%2C+%5B8.615444%2C+49.362414%5D%2C+%5B8.61635%2C+49.362058%5D%2C+%5B8.617043%2C+49.361767%5D%2C+%5B8.617591%2C+49.361529%5D%2C+%5B8.618237%2C+49.361201%5D%2C+%5B8.618957%2C+49.360849%5D%2C+%5B8.619443%2C+49.360653%5D%2C+%5B8.619975%2C+49.360461%5D%2C+%5B8.620625%2C+49.360206%5D%2C+%5B8.621086%2C+49.360044%5D%2C+%5B8.621364%2C+49.359916%5D%2C+%5B8.621823%2C+49.359713%5D%2C+%5B8.622089%2C+49.35959%5D%2C+%5B8.622436%2C+49.35947%5D%2C+%5B8.623627%2C+49.359191%5D%2C+%5B8.624466%2C+49.359063%5D%2C+%5B8.623282%2C+49.35746%5D%2C+%5B8.623019%2C+49.357581%5D%2C+%5B8.621335%2C+49.355497%5D%2C+%5B8.620215%2C+49.354073%5D%2C+%5B8.620484%2C+49.354038%5D%2C+%5B8.620686%2C+49.354007%5D%2C+%5B8.621085%2C+49.353877%5D%2C+%5B8.623323%2C+49.35288%5D%2C+%5B8.625019%2C+49.352119%5D%2C+%5B8.62524%2C+49.35203%5D%2C+%5B8.625625%2C+49.352003%5D%2C+%5B8.627988%2C+49.352082%5D%2C+%5B8.628566%2C+49.352102%5D%2C+%5B8.629102%2C+49.352103%5D%2C+%5B8.629641%2C+49.352094%5D%2C+%5B8.630762%2C+49.352065%5D%2C+%5B8.630787%2C+49.352734%5D%2C+%5B8.631513%2C+49.352774%5D%2C+%5B8.631909%2C+49.352796%5D%2C+%5B8.632002%2C+49.352809%5D%2C+%5B8.632227%2C+49.352816%5D%2C+%5B8.632605%2C+49.35284%5D%2C+%5B8.632903%2C+49.352846%5D%2C+%5B8.633112%2C+49.352836%5D%2C+%5B8.633234%2C+49.352838%5D%2C+%5B8.633289%2C+49.353939%5D%2C+%5B8.633355%2C+49.355012%5D%2C+%5B8.633367%2C+49.355489%5D%2C+%5B8.63355%2C+49.355781%5D%2C+%5B8.633757%2C+49.3561%5D%2C+%5B8.633974%2C+49.356482%5D%2C+%5B8.634167%2C+49.356808%5D%2C+%5B8.634287%2C+49.357126%5D%2C+%5B8.634421%2C+49.357445%5D%2C+%5B8.634503%2C+49.357686%5D%2C+%5B8.634859%2C+49.358095%5D%2C+%5B8.635396%2C+49.358765%5D%2C+%5B8.636103%2C+49.359671%5D%2C+%5B8.636657%2C+49.360357%5D%2C+%5B8.636737%2C+49.360538%5D%2C+%5B8.636888%2C+49.361037%5D%2C+%5B8.637136%2C+49.36199%5D%2C+%5B8.637264%2C+49.362635%5D%2C+%5B8.637304%2C+49.362804%5D%2C+%5B8.637443%2C+49.363191%5D%2C+%5B8.637664%2C+49.36361%5D%2C+%5B8.637986%2C+49.364357%5D%2C+%5B8.638362%2C+49.365323%5D%2C+%5B8.638797%2C+49.36638%5D%2C+%5B8.639105%2C+49.3671%5D%2C+%5B8.639672%2C+49.368535%5D%2C+%5B8.640274%2C+49.369977%5D%2C+%5B8.64095%2C+49.36962%5D%2C+%5B8.642835%2C+49.368655%5D%2C+%5B8.644035%2C+49.369071%5D%2C+%5B8.644716%2C+49.369324%5D%2C+%5B8.644987%2C+49.369459%5D%2C+%5B8.645246%2C+49.369621%5D%2C+%5B8.645609%2C+49.369857%5D%2C+%5B8.645945%2C+49.370086%5D%2C+%5B8.646206%2C+49.370303%5D%2C+%5B8.646365%2C+49.370464%5D%2C+%5B8.647363%2C+49.369711%5D%2C+%5B8.647775%2C+49.369395%5D%2C+%5B8.64813%2C+49.369156%5D%2C+%5B8.648616%2C+49.368856%5D%2C+%5B8.649147%2C+49.368515%5D%2C+%5B8.649775%2C+49.368118%5D%2C+%5B8.650491%2C+49.367685%5D%2C+%5B8.650841%2C+49.367478%5D%2C+%5B8.650529%2C+49.366984%5D%2C+%5B8.650281%2C+49.366573%5D%2C+%5B8.650115%2C+49.36627%5D%2C+%5B8.649942%2C+49.365978%5D%2C+%5B8.651691%2C+49.364976%5D%2C+%5B8.651847%2C+49.365094%5D%2C+%5B8.652197%2C+49.364902%5D%2C+%5B8.652915%2C+49.364549%5D%2C+%5B8.653519%2C+49.364273%5D%2C+%5B8.654112%2C+49.36402%5D%2C+%5B8.654768%2C+49.363737%5D%2C+%5B8.655407%2C+49.363473%5D%2C+%5B8.656377%2C+49.363115%5D%2C+%5B8.657142%2C+49.362813%5D%2C+%5B8.657764%2C+49.363277%5D%2C+%5B8.658185%2C+49.363054%5D%2C+%5B8.658651%2C+49.362837%5D%2C+%5B8.659164%2C+49.362571%5D%2C+%5B8.658051%2C+49.361776%5D%2C+%5B8.657009%2C+49.360179%5D%2C+%5B8.656454%2C+49.35929%5D%2C+%5B8.655814%2C+49.358138%5D%2C+%5B8.655354%2C+49.357298%5D%2C+%5B8.654879%2C+49.356558%5D%2C+%5B8.654787%2C+49.35643%5D%2C+%5B8.654561%2C+49.356112%5D%2C+%5B8.653362%2C+49.356263%5D%2C+%5B8.652987%2C+49.35577%5D%2C+%5B8.652544%2C+49.355287%5D%2C+%5B8.652104%2C+49.35458%5D%2C+%5B8.651277%2C+49.353254%5D%2C+%5B8.651454%2C+49.353204%5D%2C+%5B8.651636%2C+49.353188%5D%2C+%5B8.65183%2C+49.353191%5D%2C+%5B8.652046%2C+49.353203%5D%2C+%5B8.652348%2C+49.353246%5D%2C+%5B8.652615%2C+49.353273%5D%2C+%5B8.652844%2C+49.353279%5D%2C+%5B8.653124%2C+49.353277%5D%2C+%5B8.653474%2C+49.353258%5D%2C+%5B8.653742%2C+49.353245%5D%2C+%5B8.654053%2C+49.353215%5D%2C+%5B8.654541%2C+49.353146%5D%2C+%5B8.655319%2C+49.353021%5D%2C+%5B8.656788%2C+49.352777%5D%2C+%5B8.657594%2C+49.352635%5D%2C+%5B8.657702%2C+49.352622%5D%2C+%5B8.657803%2C+49.352609%5D%2C+%5B8.658004%2C+49.352578%5D%2C+%5B8.658147%2C+49.352565%5D%2C+%5B8.657938%2C+49.35276%5D%2C+%5B8.657306%2C+49.353303%5D%2C+%5B8.657404%2C+49.353355%5D%2C+%5B8.656818%2C+49.353732%5D%2C+%5B8.656362%2C+49.354017%5D%2C+%5B8.656689%2C+49.35436%5D%2C+%5B8.657243%2C+49.355195%5D%2C+%5B8.658874%2C+49.354938%5D%2C+%5B8.660099%2C+49.354864%5D%2C+%5B8.660662%2C+49.354831%5D%2C+%5B8.660554%2C+49.35385%5D%2C+%5B8.661186%2C+49.353988%5D%2C+%5B8.661529%2C+49.354066%5D%2C+%5B8.662499%2C+49.354314%5D%2C+%5B8.663203%2C+49.354396%5D%2C+%5B8.663578%2C+49.353585%5D%2C+%5B8.664184%2C+49.353663%5D%2C+%5B8.665018%2C+49.353769%5D%2C+%5B8.664862%2C+49.354592%5D%2C+%5B8.664516%2C+49.356424%5D%2C+%5B8.664343%2C+49.35714%5D%2C+%5B8.664257%2C+49.357496%5D%2C+%5B8.664523%2C+49.357548%5D%2C+%5B8.664876%2C+49.357593%5D%2C+%5B8.667029%2C+49.35798%5D%2C+%5B8.66801%2C+49.358065%5D%2C+%5B8.668543%2C+49.358111%5D%2C+%5B8.668764%2C+49.358127%5D%2C+%5B8.669807%2C+49.358003%5D%2C+%5B8.671465%2C+49.357805%5D%2C+%5B8.67168%2C+49.357818%5D%2C+%5B8.671905%2C+49.359187%5D%2C+%5B8.672189%2C+49.360595%5D%2C+%5B8.672443%2C+49.361521%5D%2C+%5B8.6742%2C+49.361218%5D%2C+%5B8.675834%2C+49.360668%5D%2C+%5B8.675955%2C+49.360221%5D%2C+%5B8.677248%2C+49.360356%5D%2C+%5B8.678227%2C+49.360428%5D%2C+%5B8.67875%2C+49.360442%5D%2C+%5B8.679817%2C+49.360427%5D%2C+%5B8.679921%2C+49.360425%5D%2C+%5B8.682084%2C+49.360389%5D%2C+%5B8.682014%2C+49.359907%5D%2C+%5B8.684247%2C+49.359817%5D%2C+%5B8.684378%2C+49.359781%5D%2C+%5B8.68706%2C+49.359824%5D%2C+%5B8.687067%2C+49.35976%5D%2C+%5B8.687186%2C+49.359138%5D%2C+%5B8.687237%2C+49.35886%5D%2C+%5B8.689029%2C+49.3589%5D%2C+%5B8.689213%2C+49.358942%5D%2C+%5B8.690288%2C+49.358929%5D%2C+%5B8.690684%2C+49.358899%5D%2C+%5B8.691469%2C+49.358787%5D%2C+%5B8.691399%2C+49.358492%5D%2C+%5B8.692384%2C+49.358415%5D%2C+%5B8.692438%2C+49.358513%5D%2C+%5B8.692875%2C+49.358386%5D%2C+%5B8.692904%2C+49.358507%5D%2C+%5B8.693627%2C+49.358371%5D%2C+%5B8.693654%2C+49.35848%5D%2C+%5B8.694136%2C+49.358357%5D%2C+%5B8.694369%2C+49.358679%5D%2C+%5B8.69466%2C+49.358603%5D%2C+%5B8.694621%2C+49.358537%5D%2C+%5B8.694444%2C+49.358239%5D%2C+%5B8.6964%2C+49.357749%5D%2C+%5B8.696686%2C+49.357789%5D%2C+%5B8.696953%2C+49.358039%5D%2C+%5B8.698234%2C+49.357421%5D%2C+%5B8.699042%2C+49.357005%5D%2C+%5B8.699133%2C+49.357005%5D%2C+%5B8.699224%2C+49.357003%5D%2C+%5B8.699468%2C+49.356867%5D%2C+%5B8.70005%2C+49.356571%5D%2C+%5B8.700092%2C+49.35655%5D%2C+%5B8.700541%2C+49.356327%5D%2C+%5B8.701206%2C+49.356063%5D%2C+%5B8.701769%2C+49.355846%5D%2C+%5B8.701847%2C+49.355815%5D%2C+%5B8.70249%2C+49.355716%5D%2C+%5B8.703321%2C+49.355722%5D%2C+%5B8.703979%2C+49.355745%5D%2C+%5B8.704667%2C+49.355786%5D%2C+%5B8.705234%2C+49.355848%5D%2C+%5B8.705404%2C+49.355871%5D%2C+%5B8.705776%2C+49.35592%5D%2C+%5B8.706353%2C+49.356042%5D%2C+%5B8.706882%2C+49.356123%5D%2C+%5B8.708303%2C+49.356341%5D%2C+%5B8.70964%2C+49.35658%5D%2C+%5B8.71027%2C+49.355542%5D%2C+%5B8.710889%2C+49.35511%5D%2C+%5B8.711249%2C+49.35521%5D%2C+%5B8.7114%2C+49.35534%5D%2C+%5B8.711683%2C+49.355525%5D%2C+%5B8.711946%2C+49.355618%5D%2C+%5B8.712513%2C+49.355659%5D%2C+%5B8.71339%2C+49.355695%5D%2C+%5B8.71423%2C+49.355746%5D%2C+%5B8.715084%2C+49.355951%5D%2C+%5B8.715987%2C+49.35624%5D%2C+%5B8.716396%2C+49.356342%5D%2C+%5B8.718652%2C+49.356379%5D%2C+%5B8.71896%2C+49.356351%5D%2C+%5B8.719342%2C+49.356762%5D%2C+%5B8.719472%2C+49.357065%5D%2C+%5B8.71971%2C+49.357302%5D%2C+%5B8.720122%2C+49.357284%5D%2C+%5B8.721267%2C+49.357192%5D%2C+%5B8.721461%2C+49.357173%5D%2C+%5B8.722389%2C+49.357253%5D%2C+%5B8.723668%2C+49.357439%5D%2C+%5B8.724196%2C+49.357602%5D%2C+%5B8.724937%2C+49.357921%5D%2C+%5B8.72524%2C+49.358308%5D%2C+%5B8.725498%2C+49.358663%5D%2C+%5B8.725599%2C+49.358803%5D%2C+%5B8.726016%2C+49.359476%5D%2C+%5B8.726055%2C+49.360045%5D%2C+%5B8.726094%2C+49.360374%5D%2C+%5B8.727113%2C+49.361989%5D%2C+%5B8.727202%2C+49.362889%5D%2C+%5B8.727423%2C+49.364132%5D%2C+%5B8.727717%2C+49.365509%5D%2C+%5B8.728446%2C+49.366441%5D%2C+%5B8.728671%2C+49.366705%5D%2C+%5B8.728942%2C+49.366897%5D%2C+%5B8.730404%2C+49.367933%5D%2C+%5B8.729929%2C+49.368208%5D%2C+%5B8.728541%2C+49.368817%5D%2C+%5B8.72836%2C+49.368682%5D%2C+%5B8.726259%2C+49.369455%5D%2C+%5B8.725357%2C+49.370066%5D%2C+%5B8.725576%2C+49.37022%5D%2C+%5B8.725009%2C+49.371211%5D%2C+%5B8.724729%2C+49.37225%5D%2C+%5B8.724401%2C+49.373496%5D%2C+%5B8.724479%2C+49.373747%5D%2C+%5B8.724841%2C+49.373956%5D%2C+%5B8.727404%2C+49.375554%5D%2C+%5B8.72822%2C+49.374821%5D%2C+%5B8.729138%2C+49.374009%5D%2C+%5B8.730155%2C+49.373179%5D%2C+%5B8.730385%2C+49.373252%5D%2C+%5B8.730507%2C+49.373311%5D%2C+%5B8.731437%2C+49.372716%5D%2C+%5B8.732328%2C+49.372224%5D%2C+%5B8.733929%2C+49.372675%5D%2C+%5B8.735724%2C+49.372956%5D%2C+%5B8.736319%2C+49.373324%5D%2C+%5B8.737564%2C+49.374161%5D%2C+%5B8.738416%2C+49.374491%5D%2C+%5B8.740049%2C+49.374553%5D%2C+%5B8.740729%2C+49.374442%5D%2C+%5B8.741468%2C+49.373924%5D%2C+%5B8.742963%2C+49.373108%5D%2C+%5B8.744141%2C+49.372795%5D%2C+%5B8.745571%2C+49.37295%5D%2C+%5B8.746882%2C+49.373148%5D%2C+%5B8.747531%2C+49.373299%5D%2C+%5B8.747803%2C+49.373403%5D%2C+%5B8.74801%2C+49.373481%5D%2C+%5B8.749031%2C+49.373788%5D%2C+%5B8.749349%2C+49.373809%5D%2C+%5B8.749506%2C+49.373874%5D%2C+%5B8.749682%2C+49.374157%5D%2C+%5B8.749784%2C+49.374269%5D%2C+%5B8.749979%2C+49.37486%5D%2C+%5B8.750254%2C+49.375234%5D%2C+%5B8.750486%2C+49.375439%5D%2C+%5B8.751287%2C+49.375853%5D%2C+%5B8.751986%2C+49.376167%5D%2C+%5B8.752481%2C+49.376371%5D%2C+%5B8.75318%2C+49.376893%5D%2C+%5B8.753542%2C+49.377091%5D%2C+%5B8.754226%2C+49.377357%5D%2C+%5B8.754767%2C+49.377572%5D%2C+%5B8.754718%2C+49.377723%5D%2C+%5B8.754876%2C+49.377766%5D%2C+%5B8.75543%2C+49.377841%5D%2C+%5B8.756198%2C+49.37791%5D%2C+%5B8.756906%2C+49.377922%5D%2C+%5B8.75795%2C+49.377906%5D%2C+%5B8.758486%2C+49.377899%5D%2C+%5B8.758903%2C+49.377943%5D%2C+%5B8.759138%2C+49.377807%5D%2C+%5B8.759187%2C+49.377808%5D%2C+%5B8.759786%2C+49.377905%5D%2C+%5B8.760544%2C+49.378024%5D%2C+%5B8.762615%2C+49.378444%5D%2C+%5B8.763084%2C+49.378532%5D%2C+%5B8.763661%2C+49.378542%5D%2C+%5B8.76537%2C+49.378518%5D%2C+%5B8.766125%2C+49.378539%5D%2C+%5B8.766754%2C+49.378608%5D%2C+%5B8.76849%2C+49.379027%5D%2C+%5B8.76883%2C+49.379193%5D%2C+%5B8.768381%2C+49.379612%5D%2C+%5B8.767516%2C+49.380685%5D%2C+%5B8.766845%2C+49.381341%5D%2C+%5B8.766279%2C+49.382016%5D%2C+%5B8.765944%2C+49.3827%5D%2C+%5B8.76528%2C+49.383389%5D%2C+%5B8.764256%2C+49.384184%5D%2C+%5B8.763735%2C+49.384783%5D%2C+%5B8.76338%2C+49.385218%5D%2C+%5B8.763158%2C+49.385451%5D%2C+%5B8.762978%2C+49.385762%5D%2C+%5B8.762909%2C+49.385993%5D%2C+%5B8.762887%2C+49.386438%5D%2C+%5B8.762991%2C+49.386902%5D%2C+%5B8.762978%2C+49.387249%5D%2C+%5B8.762899%2C+49.387516%5D%2C+%5B8.763192%2C+49.387952%5D%2C+%5B8.764231%2C+49.387498%5D%2C+%5B8.766654%2C+49.387178%5D%2C+%5B8.767235%2C+49.387062%5D%2C+%5B8.767759%2C+49.386865%5D%2C+%5B8.768178%2C+49.386789%5D%2C+%5B8.768518%2C+49.386845%5D%2C+%5B8.768945%2C+49.386974%5D%2C+%5B8.76931%2C+49.387141%5D%2C+%5B8.769787%2C+49.387254%5D%2C+%5B8.770146%2C+49.387651%5D%2C+%5B8.771331%2C+49.388121%5D%2C+%5B8.771843%2C+49.388408%5D%2C+%5B8.772677%2C+49.388667%5D%2C+%5B8.772941%2C+49.388877%5D%2C+%5B8.773016%2C+49.389213%5D%2C+%5B8.773661%2C+49.389392%5D%2C+%5B8.773463%2C+49.389673%5D%2C+%5B8.773409%2C+49.390055%5D%2C+%5B8.77366%2C+49.390523%5D%2C+%5B8.773878%2C+49.390825%5D%2C+%5B8.774229%2C+49.390979%5D%2C+%5B8.774594%2C+49.391209%5D%2C+%5B8.775114%2C+49.391654%5D%2C+%5B8.775375%2C+49.392035%5D%2C+%5B8.775841%2C+49.392457%5D%2C+%5B8.775179%2C+49.393053%5D%2C+%5B8.776011%2C+49.393547%5D%2C+%5B8.776472%2C+49.394054%5D%2C+%5B8.776103%2C+49.394241%5D%2C+%5B8.775839%2C+49.394462%5D%2C+%5B8.775613%2C+49.394778%5D%2C+%5B8.775432%2C+49.39513%5D%2C+%5B8.775357%2C+49.395498%5D%2C+%5B8.775351%2C+49.39589%5D%2C+%5B8.775405%2C+49.396353%5D%2C+%5B8.77561%2C+49.396942%5D%2C+%5B8.775853%2C+49.397499%5D%2C+%5B8.77627%2C+49.398226%5D%2C+%5B8.776723%2C+49.39895%5D%2C+%5B8.777297%2C+49.399896%5D%2C+%5B8.777925%2C+49.401157%5D%2C+%5B8.778345%2C+49.40224%5D%2C+%5B8.779285%2C+49.402018%5D%2C+%5B8.78048%2C+49.4018%5D%2C+%5B8.781842%2C+49.401604%5D%2C+%5B8.783078%2C+49.401452%5D%2C+%5B8.783982%2C+49.401369%5D%2C+%5B8.784682%2C+49.401329%5D%2C+%5B8.785426%2C+49.40138%5D%2C+%5B8.78645%2C+49.401532%5D%2C+%5B8.787479%2C+49.40178%5D%2C+%5B8.789244%2C+49.402355%5D%2C+%5B8.790122%2C+49.40271%5D%2C+%5B8.7907%2C+49.403068%5D%2C+%5B8.791436%2C+49.403734%5D%2C+%5B8.792046%2C+49.404237%5D%2C+%5B8.792756%2C+49.404675%5D%2C+%5B8.793315%2C+49.405004%5D%2C+%5B8.793591%2C+49.405187%5D%2C+%5B8.793708%2C+49.405634%5D%2C+%5B8.793657%2C+49.406063%5D%2C+%5B8.793701%2C+49.40635%5D%2C+%5B8.793964%2C+49.406931%5D%2C+%5B8.79405%2C+49.40719%5D%2C+%5B8.793454%2C+49.408909%5D%2C+%5B8.79312%2C+49.409948%5D%2C+%5B8.793072%2C+49.410423%5D%2C+%5B8.792942%2C+49.411043%5D%2C+%5B8.792821%2C+49.411647%5D%2C+%5B8.792762%2C+49.411853%5D%2C+%5B8.792359%2C+49.412349%5D%2C+%5B8.790377%2C+49.414782%5D%2C+%5B8.790199%2C+49.414964%5D%2C+%5B8.790132%2C+49.415286%5D%2C+%5B8.789943%2C+49.416379%5D%2C+%5B8.78948%2C+49.417608%5D%2C+%5B8.789429%2C+49.418818%5D%2C+%5B8.789394%2C+49.419256%5D%2C+%5B8.789554%2C+49.419831%5D%2C+%5B8.789819%2C+49.420577%5D%2C+%5B8.789964%2C+49.421041%5D%2C+%5B8.790162%2C+49.421213%5D%2C+%5B8.791171%2C+49.42288%5D%2C+%5B8.791273%2C+49.423259%5D%2C+%5B8.790903%2C+49.424051%5D%2C+%5B8.789978%2C+49.425944%5D%2C+%5B8.789643%2C+49.42708%5D%2C+%5B8.78907%2C+49.430067%5D%2C+%5B8.78834%2C+49.431146%5D%2C+%5B8.786537%2C+49.432578%5D%2C+%5B8.779296%2C+49.432764%5D%2C+%5B8.777773%2C+49.432907%5D%2C+%5B8.777268%2C+49.433012%5D%2C+%5B8.776973%2C+49.433155%5D%2C+%5B8.776765%2C+49.433357%5D%2C+%5B8.775986%2C+49.434071%5D%2C+%5B8.774992%2C+49.43454%5D%2C+%5B8.774022%2C+49.434993%5D%2C+%5B8.773641%2C+49.435318%5D%2C+%5B8.773252%2C+49.435419%5D%2C+%5B8.772923%2C+49.435463%5D%2C+%5B8.77217%2C+49.435536%5D%2C+%5B8.77045%2C+49.435737%5D%2C+%5B8.769482%2C+49.436046%5D%2C+%5B8.766398%2C+49.437365%5D%2C+%5B8.766515%2C+49.440274%5D%2C+%5B8.766223%2C+49.440275%5D%2C+%5B8.76637%2C+49.441863%5D%2C+%5B8.766334%2C+49.443584%5D%2C+%5B8.764728%2C+49.446047%5D%2C+%5B8.761766%2C+49.448135%5D%2C+%5B8.761703%2C+49.450618%5D%2C+%5B8.761818%2C+49.450806%5D%2C+%5B8.762051%2C+49.450947%5D%2C+%5B8.763169%2C+49.451433%5D%2C+%5B8.764276%2C+49.451893%5D%2C+%5B8.765277%2C+49.452469%5D%2C+%5B8.766319%2C+49.453103%5D%2C+%5B8.767107%2C+49.453699%5D%2C+%5B8.767706%2C+49.454192%5D%2C+%5B8.765332%2C+49.455547%5D%2C+%5B8.763575%2C+49.456368%5D%2C+%5B8.76329%2C+49.456467%5D%2C+%5B8.762939%2C+49.456488%5D%2C+%5B8.76055%2C+49.456573%5D%2C+%5B8.758634%2C+49.456662%5D%2C+%5B8.757555%2C+49.456702%5D%2C+%5B8.757041%2C+49.457473%5D%2C+%5B8.756618%2C+49.457934%5D%2C+%5B8.756062%2C+49.458405%5D%2C+%5B8.755408%2C+49.458854%5D%2C+%5B8.754686%2C+49.459468%5D%2C+%5B8.754705%2C+49.459642%5D%2C+%5B8.753986%2C+49.459693%5D%2C+%5B8.753099%2C+49.459548%5D%2C+%5B8.75158%2C+49.459204%5D%2C+%5B8.750438%2C+49.458958%5D%2C+%5B8.750091%2C+49.459072%5D%2C+%5B8.748992%2C+49.459252%5D%2C+%5B8.747833%2C+49.459441%5D%2C+%5B8.746352%2C+49.459567%5D%2C+%5B8.74547%2C+49.459614%5D%2C+%5B8.745235%2C+49.459571%5D%2C+%5B8.744884%2C+49.459434%5D%2C+%5B8.744315%2C+49.459159%5D%2C+%5B8.743336%2C+49.458648%5D%2C+%5B8.74322%2C+49.458497%5D%2C+%5B8.74324%2C+49.458378%5D%2C+%5B8.743121%2C+49.458305%5D%2C+%5B8.742643%2C+49.45808%5D%2C+%5B8.741969%2C+49.45777%5D%2C+%5B8.741674%2C+49.457558%5D%2C+%5B8.741746%2C+49.457041%5D%2C+%5B8.741807%2C+49.456563%5D%2C+%5B8.741842%2C+49.456478%5D%2C+%5B8.742048%2C+49.4564%5D%2C+%5B8.74257%2C+49.456328%5D%2C+%5B8.74305%2C+49.456335%5D%2C+%5B8.743558%2C+49.456352%5D%2C+%5B8.744051%2C+49.456283%5D%2C+%5B8.744436%2C+49.456168%5D%2C+%5B8.744628%2C+49.456101%5D%2C+%5B8.744776%2C+49.456069%5D%2C+%5B8.744954%2C+49.456089%5D%2C+%5B8.745101%2C+49.456082%5D%2C+%5B8.745388%2C+49.455974%5D%2C+%5B8.745895%2C+49.455754%5D%2C+%5B8.746052%2C+49.455642%5D%2C+%5B8.746083%2C+49.455363%5D%2C+%5B8.746078%2C+49.455054%5D%2C+%5B8.746063%2C+49.454896%5D%2C+%5B8.745975%2C+49.454771%5D%2C+%5B8.745912%2C+49.454691%5D%2C+%5B8.745943%2C+49.454522%5D%2C+%5B8.746025%2C+49.45416%5D%2C+%5B8.746118%2C+49.453701%5D%2C+%5B8.746201%2C+49.453499%5D%2C+%5B8.746235%2C+49.453234%5D%2C+%5B8.745966%2C+49.452626%5D%2C+%5B8.745586%2C+49.451991%5D%2C+%5B8.744871%2C+49.451023%5D%2C+%5B8.744719%2C+49.450685%5D%2C+%5B8.744556%2C+49.450429%5D%2C+%5B8.744724%2C+49.450278%5D%2C+%5B8.74472%2C+49.450033%5D%2C+%5B8.744778%2C+49.449761%5D%2C+%5B8.745026%2C+49.449477%5D%2C+%5B8.745437%2C+49.449085%5D%2C+%5B8.745681%2C+49.448824%5D%2C+%5B8.745748%2C+49.448674%5D%2C+%5B8.745808%2C+49.448379%5D%2C+%5B8.745854%2C+49.448142%5D%2C+%5B8.745742%2C+49.447418%5D%2C+%5B8.7457%2C+49.446891%5D%2C+%5B8.739206%2C+49.446386%5D%2C+%5B8.739212%2C+49.44694%5D%2C+%5B8.738431%2C+49.448017%5D%2C+%5B8.738008%2C+49.448423%5D%2C+%5B8.737318%2C+49.44906%5D%2C+%5B8.737083%2C+49.449171%5D%2C+%5B8.736852%2C+49.449237%5D%2C+%5B8.736541%2C+49.449242%5D%2C+%5B8.735799%2C+49.449127%5D%2C+%5B8.735152%2C+49.448956%5D%2C+%5B8.734623%2C+49.44883%5D%2C+%5B8.732748%2C+49.448569%5D%2C+%5B8.730015%2C+49.448373%5D%2C+%5B8.726439%2C+49.448213%5D%2C+%5B8.725438%2C+49.448206%5D%2C+%5B8.724195%2C+49.448452%5D%2C+%5B8.723635%2C+49.448579%5D%2C+%5B8.722897%2C+49.448821%5D%2C+%5B8.722459%2C+49.449016%5D%2C+%5B8.722077%2C+49.449185%5D%2C+%5B8.721853%2C+49.449345%5D%2C+%5B8.721696%2C+49.449503%5D%2C+%5B8.721441%2C+49.449815%5D%2C+%5B8.721023%2C+49.450238%5D%2C+%5B8.720491%2C+49.450545%5D%2C+%5B8.720086%2C+49.450745%5D%2C+%5B8.719614%2C+49.451065%5D%2C+%5B8.718989%2C+49.451482%5D%2C+%5B8.718324%2C+49.451829%5D%2C+%5B8.717828%2C+49.452039%5D%2C+%5B8.717415%2C+49.452118%5D%2C+%5B8.716995%2C+49.452187%5D%2C+%5B8.716368%2C+49.452291%5D%2C+%5B8.715647%2C+49.452383%5D%2C+%5B8.715174%2C+49.45242%5D%2C+%5B8.714813%2C+49.452338%5D%2C+%5B8.714396%2C+49.452172%5D%2C+%5B8.714027%2C+49.451964%5D%2C+%5B8.713729%2C+49.451763%5D%2C+%5B8.713448%2C+49.451547%5D%2C+%5B8.71308%2C+49.451414%5D%2C+%5B8.712981%2C+49.451337%5D%2C+%5B8.712907%2C+49.451188%5D%2C+%5B8.712618%2C+49.450635%5D%2C+%5B8.712221%2C+49.450263%5D%2C+%5B8.712063%2C+49.450181%5D%2C+%5B8.711923%2C+49.450062%5D%2C+%5B8.711712%2C+49.449848%5D%2C+%5B8.711383%2C+49.449483%5D%2C+%5B8.710697%2C+49.449013%5D%2C+%5B8.709519%2C+49.447725%5D%2C+%5B8.709467%2C+49.447501%5D%2C+%5B8.709412%2C+49.446647%5D%2C+%5B8.709325%2C+49.446198%5D%2C+%5B8.708958%2C+49.446156%5D%2C+%5B8.708062%2C+49.445948%5D%2C+%5B8.707527%2C+49.44589%5D%2C+%5B8.706733%2C+49.445857%5D%2C+%5B8.706043%2C+49.445872%5D%2C+%5B8.705379%2C+49.445924%5D%2C+%5B8.704486%2C+49.446022%5D%2C+%5B8.703989%2C+49.446%5D%2C+%5B8.703226%2C+49.44592%5D%2C+%5B8.702235%2C+49.445819%5D%2C+%5B8.700441%2C+49.445474%5D%2C+%5B8.698009%2C+49.445025%5D%2C+%5B8.696864%2C+49.444866%5D%2C+%5B8.696436%2C+49.444666%5D%2C+%5B8.695967%2C+49.444555%5D%2C+%5B8.695515%2C+49.444586%5D%2C+%5B8.693686%2C+49.444206%5D%2C+%5B8.692734%2C+49.444117%5D%2C+%5B8.692166%2C+49.444018%5D%2C+%5B8.691707%2C+49.443845%5D%2C+%5B8.691244%2C+49.44365%5D%2C+%5B8.690496%2C+49.443236%5D%2C+%5B8.68937%2C+49.443263%5D%2C+%5B8.687857%2C+49.443212%5D%2C+%5B8.687569%2C+49.443035%5D%2C+%5B8.687363%2C+49.443008%5D%2C+%5B8.686799%2C+49.443048%5D%2C+%5B8.686065%2C+49.443213%5D%2C+%5B8.685572%2C+49.443319%5D%2C+%5B8.685446%2C+49.443329%5D%2C+%5B8.68496%2C+49.443355%5D%2C+%5B8.684607%2C+49.44354%5D%2C+%5B8.6843%2C+49.443671%5D%2C+%5B8.683887%2C+49.443768%5D%2C+%5B8.683496%2C+49.443878%5D%2C+%5B8.682964%2C+49.444%5D%2C+%5B8.682677%2C+49.443971%5D%2C+%5B8.682335%2C+49.443862%5D%2C+%5B8.682116%2C+49.443773%5D%2C+%5B8.681657%2C+49.443692%5D%2C+%5B8.681244%2C+49.443675%5D%2C+%5B8.680796%2C+49.443534%5D%2C+%5B8.680393%2C+49.443483%5D%2C+%5B8.67967%2C+49.443133%5D%2C+%5B8.679113%2C+49.44302%5D%2C+%5B8.679192%2C+49.442698%5D%2C+%5B8.678359%2C+49.442592%5D%2C+%5B8.678334%2C+49.442624%5D%2C+%5B8.677207%2C+49.442494%5D%2C+%5B8.677012%2C+49.442391%5D%2C+%5B8.676933%2C+49.442349%5D%2C+%5B8.676097%2C+49.442199%5D%2C+%5B8.675185%2C+49.442035%5D%2C+%5B8.674777%2C+49.441968%5D%2C+%5B8.673293%2C+49.441504%5D%2C+%5B8.672861%2C+49.441253%5D%2C+%5B8.67274%2C+49.441326%5D%2C+%5B8.672341%2C+49.441125%5D%2C+%5B8.671575%2C+49.440834%5D%2C+%5B8.670761%2C+49.441343%5D%2C+%5B8.67033%2C+49.441494%5D%2C+%5B8.669915%2C+49.441467%5D%2C+%5B8.668932%2C+49.441262%5D%2C+%5B8.667104%2C+49.440835%5D%2C+%5B8.666264%2C+49.440772%5D%2C+%5B8.665848%2C+49.44064%5D%2C+%5B8.665677%2C+49.440536%5D%2C+%5B8.665516%2C+49.440349%5D%2C+%5B8.665451%2C+49.4403%5D%2C+%5B8.665403%2C+49.440276%5D%2C+%5B8.665344%2C+49.440267%5D%2C+%5B8.665214%2C+49.440227%5D%2C+%5B8.663494%2C+49.439941%5D%2C+%5B8.663245%2C+49.439948%5D%2C+%5B8.663238%2C+49.439857%5D%2C+%5B8.663046%2C+49.43963%5D%2C+%5B8.662637%2C+49.439686%5D%2C+%5B8.662439%2C+49.439689%5D%2C+%5B8.662374%2C+49.439664%5D%2C+%5B8.661735%2C+49.439538%5D%2C+%5B8.66046%2C+49.439285%5D%2C+%5B8.658385%2C+49.438873%5D%2C+%5B8.658267%2C+49.439039%5D%2C+%5B8.657003%2C+49.438758%5D%2C+%5B8.656308%2C+49.438606%5D%2C+%5B8.65531%2C+49.439943%5D%2C+%5B8.653394%2C+49.439318%5D%2C+%5B8.649054%2C+49.437866%5D%2C+%5B8.648862%2C+49.437785%5D%2C+%5B8.648968%2C+49.437693%5D%2C+%5B8.648204%2C+49.437252%5D%2C+%5B8.647218%2C+49.436878%5D%2C+%5B8.646552%2C+49.436626%5D%2C+%5B8.646193%2C+49.436973%5D%2C+%5B8.646016%2C+49.437132%5D%2C+%5B8.645786%2C+49.437345%5D%2C+%5B8.645488%2C+49.437604%5D%2C+%5B8.645159%2C+49.437851%5D%2C+%5B8.644754%2C+49.438187%5D%2C+%5B8.644168%2C+49.438623%5D%2C+%5B8.643741%2C+49.438944%5D%2C+%5B8.643149%2C+49.439309%5D%2C+%5B8.64261%2C+49.43961%5D%2C+%5B8.642565%2C+49.439635%5D%2C+%5B8.642246%2C+49.439785%5D%2C+%5B8.641292%2C+49.440204%5D%2C+%5B8.64031%2C+49.440607%5D%2C+%5B8.639305%2C+49.44098%5D%2C+%5B8.638212%2C+49.441336%5D%2C+%5B8.637172%2C+49.441631%5D%2C+%5B8.636078%2C+49.441893%5D%2C+%5B8.634983%2C+49.442126%5D%2C+%5B8.633858%2C+49.442342%5D%2C+%5B8.632702%2C+49.442524%5D%2C+%5B8.631601%2C+49.44272%5D%2C+%5B8.630453%2C+49.442879%5D%2C+%5B8.629367%2C+49.443018%5D%2C+%5B8.628703%2C+49.443115%5D%2C+%5B8.628211%2C+49.441976%5D%2C+%5B8.628012%2C+49.44157%5D%2C+%5B8.627351%2C+49.440827%5D%2C+%5B8.626819%2C+49.440265%5D%2C+%5B8.626616%2C+49.440059%5D%2C+%5B8.626743%2C+49.439998%5D%2C+%5B8.626134%2C+49.439394%5D%2C+%5B8.62331%2C+49.436631%5D%2C+%5B8.623037%2C+49.436356%5D%2C+%5B8.622925%2C+49.436225%5D%2C+%5B8.622831%2C+49.436102%5D%2C+%5B8.62272%2C+49.435915%5D%2C+%5B8.622619%2C+49.43575%5D%2C+%5B8.622521%2C+49.435595%5D%2C+%5B8.622406%2C+49.435412%5D%2C+%5B8.622309%2C+49.435279%5D%2C+%5B8.622204%2C+49.435144%5D%2C+%5B8.621395%2C+49.434225%5D%2C+%5B8.621165%2C+49.433964%5D%2C+%5B8.621049%2C+49.433843%5D%2C+%5B8.620927%2C+49.433893%5D%2C+%5B8.619493%2C+49.432264%5D%2C+%5B8.61626%2C+49.428621%5D%2C+%5B8.615974%2C+49.428303%5D%2C+%5B8.61531%2C+49.427884%5D%2C+%5B8.609952%2C+49.424382%5D%2C+%5B8.609733%2C+49.424242%5D%2C+%5B8.605472%2C+49.425826%5D%2C+%5B8.599884%2C+49.427972%5D%2C+%5B8.598382%2C+49.428508%5D%2C+%5B8.59849%2C+49.428044%5D%2C+%5B8.59823%2C+49.428143%5D%2C+%5B8.593259%2C+49.430025%5D%2C+%5B8.592963%2C+49.430133%5D%2C+%5B8.590778%2C+49.427735%5D%2C+%5B8.59045%2C+49.427367%5D%2C+%5B8.590054%2C+49.427347%5D%2C+%5B8.589757%2C+49.427329%5D%2C+%5B8.589435%2C+49.427296%5D%2C+%5B8.588442%2C+49.427151%5D%2C+%5B8.587764%2C+49.427038%5D%2C+%5B8.58724%2C+49.426958%5D%2C+%5B8.587079%2C+49.426934%5D%2C+%5B8.586232%2C+49.426846%5D%2C+%5B8.584079%2C+49.4266%5D%2C+%5B8.583508%2C+49.426541%5D%2C+%5B8.582919%2C+49.426506%5D%2C+%5B8.582023%2C+49.426473%5D%2C+%5B8.581379%2C+49.42645%5D%2C+%5B8.579833%2C+49.426199%5D%2C+%5B8.577791%2C+49.425274%5D%2C+%5B8.577288%2C+49.425085%5D%2C+%5B8.575385%2C+49.424356%5D%2C+%5B8.57529%2C+49.424422%5D%2C+%5B8.574243%2C+49.424021%5D%2C+%5B8.573179%2C+49.4236%5D%5D%5D%7D%2C+%22properties%22%3A+%7B%22osm_id%22%3A+-285864%2C+%22boundary%22%3A+%22administrative%22%2C+%22admin_level%22%3A+6%2C+%22parents%22%3A+%22-22027%2C-62611%2C-51477%22%2C+%22name%22%3A+%22Heidelberg%22%2C+%22local_name%22%3A+%22Heidelberg%22%2C+%22name_en%22%3A+null%7D%7D%5D%7D&filter2=height%3D%2A+or+building%3Alevels%3D%2A + headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '30582' + content-type: + - application/x-www-form-urlencoded + host: + - api.ohsome.org + user-agent: + - ohsome-quality-api/1.7.0 + method: POST + uri: https://api.ohsome.org/v1/elements/count/ratio + response: + content: "{\n \"attribution\" : {\n \"url\" : \"https://ohsome.org/copyrights\",\n + \ \"text\" : \"\xA9 OpenStreetMap contributors\"\n },\n \"apiVersion\" : + \"1.10.4\",\n \"ratioResult\" : [ {\n \"timestamp\" : \"2024-10-14T13:00:00Z\",\n + \ \"value\" : 30237.0,\n \"value2\" : 18057.0,\n \"ratio\" : 0.597182\n + \ } ]\n}" + headers: + access-control-allow-credentials: + - 'true' + access-control-allow-headers: + - Origin,Accept,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization + access-control-allow-methods: + - POST, GET + access-control-allow-origin: + - '*' + access-control-max-age: + - '3600' + cache-control: + - no-cache, no-store, must-revalidate + connection: + - Keep-Alive + content-encoding: + - gzip + content-type: + - application/json + date: + - Thu, 14 Nov 2024 22:41:07 GMT + keep-alive: + - timeout=5, max=100 + server: + - Apache + strict-transport-security: + - max-age=63072000; includeSubdomains; + transfer-encoding: + - chunked + vary: + - accept-encoding + http_version: HTTP/1.1 + status_code: 200 +- request: + body: filter=building%3D%2A+and+building%21%3Dno+and+geometry%3Apolygon&bpolys=%7B%22type%22%3A+%22FeatureCollection%22%2C+%22features%22%3A+%5B%7B%22type%22%3A+%22Feature%22%2C+%22geometry%22%3A+%7B%22type%22%3A+%22Polygon%22%2C+%22coordinates%22%3A+%5B%5B%5B8.573179%2C+49.4236%5D%2C+%5B8.573244%2C+49.423266%5D%2C+%5B8.573517%2C+49.421746%5D%2C+%5B8.573602%2C+49.421029%5D%2C+%5B8.57363%2C+49.420766%5D%2C+%5B8.573618%2C+49.420478%5D%2C+%5B8.573575%2C+49.420208%5D%2C+%5B8.573487%2C+49.419852%5D%2C+%5B8.573253%2C+49.419103%5D%2C+%5B8.57328%2C+49.418634%5D%2C+%5B8.573262%2C+49.41846%5D%2C+%5B8.573244%2C+49.418239%5D%2C+%5B8.573233%2C+49.418026%5D%2C+%5B8.573211%2C+49.417562%5D%2C+%5B8.573206%2C+49.417217%5D%2C+%5B8.573223%2C+49.416902%5D%2C+%5B8.573288%2C+49.416518%5D%2C+%5B8.57343%2C+49.415763%5D%2C+%5B8.573622%2C+49.415734%5D%2C+%5B8.57398%2C+49.414723%5D%2C+%5B8.574098%2C+49.414422%5D%2C+%5B8.574905%2C+49.412659%5D%2C+%5B8.575126%2C+49.41262%5D%2C+%5B8.575952%2C+49.412479%5D%2C+%5B8.576355%2C+49.412403%5D%2C+%5B8.576806%2C+49.412309%5D%2C+%5B8.577418%2C+49.412162%5D%2C+%5B8.578871%2C+49.411816%5D%2C+%5B8.580327%2C+49.411477%5D%2C+%5B8.580548%2C+49.411425%5D%2C+%5B8.581021%2C+49.411314%5D%2C+%5B8.581467%2C+49.411198%5D%2C+%5B8.582126%2C+49.411021%5D%2C+%5B8.58281%2C+49.410831%5D%2C+%5B8.583621%2C+49.410604%5D%2C+%5B8.584256%2C+49.41041%5D%2C+%5B8.584461%2C+49.410598%5D%2C+%5B8.584601%2C+49.41074%5D%2C+%5B8.58466%2C+49.410809%5D%2C+%5B8.584729%2C+49.410896%5D%2C+%5B8.584841%2C+49.411043%5D%2C+%5B8.584893%2C+49.411041%5D%2C+%5B8.590664%2C+49.410551%5D%2C+%5B8.592504%2C+49.410392%5D%2C+%5B8.59249%2C+49.410325%5D%2C+%5B8.592557%2C+49.410316%5D%2C+%5B8.592992%2C+49.410285%5D%2C+%5B8.594295%2C+49.410194%5D%2C+%5B8.595027%2C+49.410131%5D%2C+%5B8.595718%2C+49.41008%5D%2C+%5B8.596457%2C+49.410013%5D%2C+%5B8.597109%2C+49.409948%5D%2C+%5B8.597817%2C+49.409869%5D%2C+%5B8.598479%2C+49.409799%5D%2C+%5B8.59864%2C+49.409784%5D%2C+%5B8.600522%2C+49.409526%5D%2C+%5B8.603393%2C+49.409127%5D%2C+%5B8.60354%2C+49.409104%5D%2C+%5B8.603638%2C+49.409079%5D%2C+%5B8.6052%2C+49.408456%5D%2C+%5B8.608794%2C+49.407045%5D%2C+%5B8.610673%2C+49.405949%5D%2C+%5B8.611461%2C+49.405467%5D%2C+%5B8.612437%2C+49.406203%5D%2C+%5B8.616606%2C+49.407383%5D%2C+%5B8.622553%2C+49.409046%5D%2C+%5B8.622627%2C+49.40901%5D%2C+%5B8.622648%2C+49.408953%5D%2C+%5B8.62272%2C+49.408975%5D%2C+%5B8.622722%2C+49.408976%5D%2C+%5B8.622791%2C+49.409015%5D%2C+%5B8.622851%2C+49.409049%5D%2C+%5B8.623189%2C+49.409236%5D%2C+%5B8.624498%2C+49.409957%5D%2C+%5B8.62459%2C+49.410009%5D%2C+%5B8.625101%2C+49.410294%5D%2C+%5B8.625378%2C+49.410448%5D%2C+%5B8.625911%2C+49.410745%5D%2C+%5B8.626324%2C+49.410975%5D%2C+%5B8.626979%2C+49.411341%5D%2C+%5B8.628263%2C+49.412032%5D%2C+%5B8.62859%2C+49.412213%5D%2C+%5B8.629072%2C+49.412486%5D%2C+%5B8.630034%2C+49.413176%5D%2C+%5B8.630959%2C+49.413833%5D%2C+%5B8.632078%2C+49.414583%5D%2C+%5B8.632707%2C+49.415007%5D%2C+%5B8.632748%2C+49.415035%5D%2C+%5B8.632938%2C+49.414961%5D%2C+%5B8.633025%2C+49.414928%5D%2C+%5B8.633075%2C+49.414807%5D%2C+%5B8.63406%2C+49.412449%5D%2C+%5B8.634446%2C+49.411487%5D%2C+%5B8.634737%2C+49.410763%5D%2C+%5B8.635407%2C+49.409092%5D%2C+%5B8.635873%2C+49.407932%5D%2C+%5B8.636033%2C+49.40753%5D%2C+%5B8.636136%2C+49.407242%5D%2C+%5B8.636215%2C+49.406957%5D%2C+%5B8.636379%2C+49.406391%5D%2C+%5B8.636465%2C+49.406041%5D%2C+%5B8.636591%2C+49.405566%5D%2C+%5B8.636667%2C+49.405073%5D%2C+%5B8.636706%2C+49.404806%5D%2C+%5B8.636743%2C+49.404552%5D%2C+%5B8.636827%2C+49.403969%5D%2C+%5B8.6369%2C+49.403462%5D%2C+%5B8.636926%2C+49.403268%5D%2C+%5B8.637017%2C+49.402596%5D%2C+%5B8.637222%2C+49.401141%5D%2C+%5B8.63755%2C+49.3988%5D%2C+%5B8.638008%2C+49.395648%5D%2C+%5B8.638186%2C+49.393813%5D%2C+%5B8.638295%2C+49.39272%5D%2C+%5B8.638521%2C+49.392746%5D%2C+%5B8.640722%2C+49.393021%5D%2C+%5B8.64343%2C+49.393381%5D%2C+%5B8.643512%2C+49.393194%5D%2C+%5B8.643527%2C+49.39316%5D%2C+%5B8.645535%2C+49.390884%5D%2C+%5B8.64636%2C+49.389866%5D%2C+%5B8.6475%2C+49.388537%5D%2C+%5B8.645357%2C+49.388044%5D%2C+%5B8.643807%2C+49.387609%5D%2C+%5B8.642091%2C+49.387149%5D%2C+%5B8.641038%2C+49.386841%5D%2C+%5B8.639916%2C+49.386498%5D%2C+%5B8.639667%2C+49.386434%5D%2C+%5B8.639387%2C+49.386413%5D%2C+%5B8.638662%2C+49.386411%5D%2C+%5B8.638086%2C+49.386573%5D%2C+%5B8.636604%2C+49.38704%5D%2C+%5B8.634926%2C+49.387313%5D%2C+%5B8.633683%2C+49.387185%5D%2C+%5B8.633598%2C+49.387174%5D%2C+%5B8.633542%2C+49.386897%5D%2C+%5B8.633434%2C+49.386227%5D%2C+%5B8.633401%2C+49.385899%5D%2C+%5B8.633366%2C+49.385891%5D%2C+%5B8.630199%2C+49.385201%5D%2C+%5B8.629858%2C+49.385107%5D%2C+%5B8.629436%2C+49.384945%5D%2C+%5B8.628851%2C+49.384706%5D%2C+%5B8.628366%2C+49.384445%5D%2C+%5B8.627801%2C+49.38413%5D%2C+%5B8.627122%2C+49.383729%5D%2C+%5B8.62646%2C+49.38335%5D%2C+%5B8.625986%2C+49.383068%5D%2C+%5B8.625383%2C+49.382699%5D%2C+%5B8.624878%2C+49.382387%5D%2C+%5B8.624241%2C+49.38199%5D%2C+%5B8.623785%2C+49.381668%5D%2C+%5B8.624382%2C+49.38067%5D%2C+%5B8.621112%2C+49.380011%5D%2C+%5B8.620378%2C+49.379843%5D%2C+%5B8.617932%2C+49.379283%5D%2C+%5B8.616155%2C+49.379158%5D%2C+%5B8.615294%2C+49.378918%5D%2C+%5B8.614545%2C+49.378758%5D%2C+%5B8.613751%2C+49.378528%5D%2C+%5B8.612581%2C+49.378202%5D%2C+%5B8.610866%2C+49.378017%5D%2C+%5B8.610186%2C+49.377919%5D%2C+%5B8.609757%2C+49.37785%5D%2C+%5B8.609403%2C+49.377756%5D%2C+%5B8.609066%2C+49.377649%5D%2C+%5B8.608678%2C+49.377505%5D%2C+%5B8.607916%2C+49.37721%5D%2C+%5B8.607342%2C+49.376972%5D%2C+%5B8.606882%2C+49.376751%5D%2C+%5B8.60681%2C+49.376163%5D%2C+%5B8.607222%2C+49.374986%5D%2C+%5B8.607484%2C+49.37429%5D%2C+%5B8.607333%2C+49.373851%5D%2C+%5B8.606536%2C+49.371886%5D%2C+%5B8.605798%2C+49.370097%5D%2C+%5B8.605168%2C+49.370272%5D%2C+%5B8.60321%2C+49.368377%5D%2C+%5B8.601004%2C+49.366203%5D%2C+%5B8.604393%2C+49.365577%5D%2C+%5B8.604307%2C+49.365419%5D%2C+%5B8.605479%2C+49.365214%5D%2C+%5B8.605885%2C+49.365159%5D%2C+%5B8.607155%2C+49.365004%5D%2C+%5B8.607562%2C+49.364962%5D%2C+%5B8.607787%2C+49.364932%5D%2C+%5B8.608004%2C+49.364857%5D%2C+%5B8.60823%2C+49.364779%5D%2C+%5B8.608521%2C+49.364676%5D%2C+%5B8.608763%2C+49.364589%5D%2C+%5B8.608975%2C+49.364526%5D%2C+%5B8.60924%2C+49.364461%5D%2C+%5B8.609518%2C+49.364418%5D%2C+%5B8.609797%2C+49.364361%5D%2C+%5B8.610128%2C+49.3643%5D%2C+%5B8.610354%2C+49.364251%5D%2C+%5B8.610605%2C+49.364179%5D%2C+%5B8.610995%2C+49.364053%5D%2C+%5B8.611555%2C+49.363849%5D%2C+%5B8.612129%2C+49.363662%5D%2C+%5B8.613637%2C+49.363103%5D%2C+%5B8.615444%2C+49.362414%5D%2C+%5B8.61635%2C+49.362058%5D%2C+%5B8.617043%2C+49.361767%5D%2C+%5B8.617591%2C+49.361529%5D%2C+%5B8.618237%2C+49.361201%5D%2C+%5B8.618957%2C+49.360849%5D%2C+%5B8.619443%2C+49.360653%5D%2C+%5B8.619975%2C+49.360461%5D%2C+%5B8.620625%2C+49.360206%5D%2C+%5B8.621086%2C+49.360044%5D%2C+%5B8.621364%2C+49.359916%5D%2C+%5B8.621823%2C+49.359713%5D%2C+%5B8.622089%2C+49.35959%5D%2C+%5B8.622436%2C+49.35947%5D%2C+%5B8.623627%2C+49.359191%5D%2C+%5B8.624466%2C+49.359063%5D%2C+%5B8.623282%2C+49.35746%5D%2C+%5B8.623019%2C+49.357581%5D%2C+%5B8.621335%2C+49.355497%5D%2C+%5B8.620215%2C+49.354073%5D%2C+%5B8.620484%2C+49.354038%5D%2C+%5B8.620686%2C+49.354007%5D%2C+%5B8.621085%2C+49.353877%5D%2C+%5B8.623323%2C+49.35288%5D%2C+%5B8.625019%2C+49.352119%5D%2C+%5B8.62524%2C+49.35203%5D%2C+%5B8.625625%2C+49.352003%5D%2C+%5B8.627988%2C+49.352082%5D%2C+%5B8.628566%2C+49.352102%5D%2C+%5B8.629102%2C+49.352103%5D%2C+%5B8.629641%2C+49.352094%5D%2C+%5B8.630762%2C+49.352065%5D%2C+%5B8.630787%2C+49.352734%5D%2C+%5B8.631513%2C+49.352774%5D%2C+%5B8.631909%2C+49.352796%5D%2C+%5B8.632002%2C+49.352809%5D%2C+%5B8.632227%2C+49.352816%5D%2C+%5B8.632605%2C+49.35284%5D%2C+%5B8.632903%2C+49.352846%5D%2C+%5B8.633112%2C+49.352836%5D%2C+%5B8.633234%2C+49.352838%5D%2C+%5B8.633289%2C+49.353939%5D%2C+%5B8.633355%2C+49.355012%5D%2C+%5B8.633367%2C+49.355489%5D%2C+%5B8.63355%2C+49.355781%5D%2C+%5B8.633757%2C+49.3561%5D%2C+%5B8.633974%2C+49.356482%5D%2C+%5B8.634167%2C+49.356808%5D%2C+%5B8.634287%2C+49.357126%5D%2C+%5B8.634421%2C+49.357445%5D%2C+%5B8.634503%2C+49.357686%5D%2C+%5B8.634859%2C+49.358095%5D%2C+%5B8.635396%2C+49.358765%5D%2C+%5B8.636103%2C+49.359671%5D%2C+%5B8.636657%2C+49.360357%5D%2C+%5B8.636737%2C+49.360538%5D%2C+%5B8.636888%2C+49.361037%5D%2C+%5B8.637136%2C+49.36199%5D%2C+%5B8.637264%2C+49.362635%5D%2C+%5B8.637304%2C+49.362804%5D%2C+%5B8.637443%2C+49.363191%5D%2C+%5B8.637664%2C+49.36361%5D%2C+%5B8.637986%2C+49.364357%5D%2C+%5B8.638362%2C+49.365323%5D%2C+%5B8.638797%2C+49.36638%5D%2C+%5B8.639105%2C+49.3671%5D%2C+%5B8.639672%2C+49.368535%5D%2C+%5B8.640274%2C+49.369977%5D%2C+%5B8.64095%2C+49.36962%5D%2C+%5B8.642835%2C+49.368655%5D%2C+%5B8.644035%2C+49.369071%5D%2C+%5B8.644716%2C+49.369324%5D%2C+%5B8.644987%2C+49.369459%5D%2C+%5B8.645246%2C+49.369621%5D%2C+%5B8.645609%2C+49.369857%5D%2C+%5B8.645945%2C+49.370086%5D%2C+%5B8.646206%2C+49.370303%5D%2C+%5B8.646365%2C+49.370464%5D%2C+%5B8.647363%2C+49.369711%5D%2C+%5B8.647775%2C+49.369395%5D%2C+%5B8.64813%2C+49.369156%5D%2C+%5B8.648616%2C+49.368856%5D%2C+%5B8.649147%2C+49.368515%5D%2C+%5B8.649775%2C+49.368118%5D%2C+%5B8.650491%2C+49.367685%5D%2C+%5B8.650841%2C+49.367478%5D%2C+%5B8.650529%2C+49.366984%5D%2C+%5B8.650281%2C+49.366573%5D%2C+%5B8.650115%2C+49.36627%5D%2C+%5B8.649942%2C+49.365978%5D%2C+%5B8.651691%2C+49.364976%5D%2C+%5B8.651847%2C+49.365094%5D%2C+%5B8.652197%2C+49.364902%5D%2C+%5B8.652915%2C+49.364549%5D%2C+%5B8.653519%2C+49.364273%5D%2C+%5B8.654112%2C+49.36402%5D%2C+%5B8.654768%2C+49.363737%5D%2C+%5B8.655407%2C+49.363473%5D%2C+%5B8.656377%2C+49.363115%5D%2C+%5B8.657142%2C+49.362813%5D%2C+%5B8.657764%2C+49.363277%5D%2C+%5B8.658185%2C+49.363054%5D%2C+%5B8.658651%2C+49.362837%5D%2C+%5B8.659164%2C+49.362571%5D%2C+%5B8.658051%2C+49.361776%5D%2C+%5B8.657009%2C+49.360179%5D%2C+%5B8.656454%2C+49.35929%5D%2C+%5B8.655814%2C+49.358138%5D%2C+%5B8.655354%2C+49.357298%5D%2C+%5B8.654879%2C+49.356558%5D%2C+%5B8.654787%2C+49.35643%5D%2C+%5B8.654561%2C+49.356112%5D%2C+%5B8.653362%2C+49.356263%5D%2C+%5B8.652987%2C+49.35577%5D%2C+%5B8.652544%2C+49.355287%5D%2C+%5B8.652104%2C+49.35458%5D%2C+%5B8.651277%2C+49.353254%5D%2C+%5B8.651454%2C+49.353204%5D%2C+%5B8.651636%2C+49.353188%5D%2C+%5B8.65183%2C+49.353191%5D%2C+%5B8.652046%2C+49.353203%5D%2C+%5B8.652348%2C+49.353246%5D%2C+%5B8.652615%2C+49.353273%5D%2C+%5B8.652844%2C+49.353279%5D%2C+%5B8.653124%2C+49.353277%5D%2C+%5B8.653474%2C+49.353258%5D%2C+%5B8.653742%2C+49.353245%5D%2C+%5B8.654053%2C+49.353215%5D%2C+%5B8.654541%2C+49.353146%5D%2C+%5B8.655319%2C+49.353021%5D%2C+%5B8.656788%2C+49.352777%5D%2C+%5B8.657594%2C+49.352635%5D%2C+%5B8.657702%2C+49.352622%5D%2C+%5B8.657803%2C+49.352609%5D%2C+%5B8.658004%2C+49.352578%5D%2C+%5B8.658147%2C+49.352565%5D%2C+%5B8.657938%2C+49.35276%5D%2C+%5B8.657306%2C+49.353303%5D%2C+%5B8.657404%2C+49.353355%5D%2C+%5B8.656818%2C+49.353732%5D%2C+%5B8.656362%2C+49.354017%5D%2C+%5B8.656689%2C+49.35436%5D%2C+%5B8.657243%2C+49.355195%5D%2C+%5B8.658874%2C+49.354938%5D%2C+%5B8.660099%2C+49.354864%5D%2C+%5B8.660662%2C+49.354831%5D%2C+%5B8.660554%2C+49.35385%5D%2C+%5B8.661186%2C+49.353988%5D%2C+%5B8.661529%2C+49.354066%5D%2C+%5B8.662499%2C+49.354314%5D%2C+%5B8.663203%2C+49.354396%5D%2C+%5B8.663578%2C+49.353585%5D%2C+%5B8.664184%2C+49.353663%5D%2C+%5B8.665018%2C+49.353769%5D%2C+%5B8.664862%2C+49.354592%5D%2C+%5B8.664516%2C+49.356424%5D%2C+%5B8.664343%2C+49.35714%5D%2C+%5B8.664257%2C+49.357496%5D%2C+%5B8.664523%2C+49.357548%5D%2C+%5B8.664876%2C+49.357593%5D%2C+%5B8.667029%2C+49.35798%5D%2C+%5B8.66801%2C+49.358065%5D%2C+%5B8.668543%2C+49.358111%5D%2C+%5B8.668764%2C+49.358127%5D%2C+%5B8.669807%2C+49.358003%5D%2C+%5B8.671465%2C+49.357805%5D%2C+%5B8.67168%2C+49.357818%5D%2C+%5B8.671905%2C+49.359187%5D%2C+%5B8.672189%2C+49.360595%5D%2C+%5B8.672443%2C+49.361521%5D%2C+%5B8.6742%2C+49.361218%5D%2C+%5B8.675834%2C+49.360668%5D%2C+%5B8.675955%2C+49.360221%5D%2C+%5B8.677248%2C+49.360356%5D%2C+%5B8.678227%2C+49.360428%5D%2C+%5B8.67875%2C+49.360442%5D%2C+%5B8.679817%2C+49.360427%5D%2C+%5B8.679921%2C+49.360425%5D%2C+%5B8.682084%2C+49.360389%5D%2C+%5B8.682014%2C+49.359907%5D%2C+%5B8.684247%2C+49.359817%5D%2C+%5B8.684378%2C+49.359781%5D%2C+%5B8.68706%2C+49.359824%5D%2C+%5B8.687067%2C+49.35976%5D%2C+%5B8.687186%2C+49.359138%5D%2C+%5B8.687237%2C+49.35886%5D%2C+%5B8.689029%2C+49.3589%5D%2C+%5B8.689213%2C+49.358942%5D%2C+%5B8.690288%2C+49.358929%5D%2C+%5B8.690684%2C+49.358899%5D%2C+%5B8.691469%2C+49.358787%5D%2C+%5B8.691399%2C+49.358492%5D%2C+%5B8.692384%2C+49.358415%5D%2C+%5B8.692438%2C+49.358513%5D%2C+%5B8.692875%2C+49.358386%5D%2C+%5B8.692904%2C+49.358507%5D%2C+%5B8.693627%2C+49.358371%5D%2C+%5B8.693654%2C+49.35848%5D%2C+%5B8.694136%2C+49.358357%5D%2C+%5B8.694369%2C+49.358679%5D%2C+%5B8.69466%2C+49.358603%5D%2C+%5B8.694621%2C+49.358537%5D%2C+%5B8.694444%2C+49.358239%5D%2C+%5B8.6964%2C+49.357749%5D%2C+%5B8.696686%2C+49.357789%5D%2C+%5B8.696953%2C+49.358039%5D%2C+%5B8.698234%2C+49.357421%5D%2C+%5B8.699042%2C+49.357005%5D%2C+%5B8.699133%2C+49.357005%5D%2C+%5B8.699224%2C+49.357003%5D%2C+%5B8.699468%2C+49.356867%5D%2C+%5B8.70005%2C+49.356571%5D%2C+%5B8.700092%2C+49.35655%5D%2C+%5B8.700541%2C+49.356327%5D%2C+%5B8.701206%2C+49.356063%5D%2C+%5B8.701769%2C+49.355846%5D%2C+%5B8.701847%2C+49.355815%5D%2C+%5B8.70249%2C+49.355716%5D%2C+%5B8.703321%2C+49.355722%5D%2C+%5B8.703979%2C+49.355745%5D%2C+%5B8.704667%2C+49.355786%5D%2C+%5B8.705234%2C+49.355848%5D%2C+%5B8.705404%2C+49.355871%5D%2C+%5B8.705776%2C+49.35592%5D%2C+%5B8.706353%2C+49.356042%5D%2C+%5B8.706882%2C+49.356123%5D%2C+%5B8.708303%2C+49.356341%5D%2C+%5B8.70964%2C+49.35658%5D%2C+%5B8.71027%2C+49.355542%5D%2C+%5B8.710889%2C+49.35511%5D%2C+%5B8.711249%2C+49.35521%5D%2C+%5B8.7114%2C+49.35534%5D%2C+%5B8.711683%2C+49.355525%5D%2C+%5B8.711946%2C+49.355618%5D%2C+%5B8.712513%2C+49.355659%5D%2C+%5B8.71339%2C+49.355695%5D%2C+%5B8.71423%2C+49.355746%5D%2C+%5B8.715084%2C+49.355951%5D%2C+%5B8.715987%2C+49.35624%5D%2C+%5B8.716396%2C+49.356342%5D%2C+%5B8.718652%2C+49.356379%5D%2C+%5B8.71896%2C+49.356351%5D%2C+%5B8.719342%2C+49.356762%5D%2C+%5B8.719472%2C+49.357065%5D%2C+%5B8.71971%2C+49.357302%5D%2C+%5B8.720122%2C+49.357284%5D%2C+%5B8.721267%2C+49.357192%5D%2C+%5B8.721461%2C+49.357173%5D%2C+%5B8.722389%2C+49.357253%5D%2C+%5B8.723668%2C+49.357439%5D%2C+%5B8.724196%2C+49.357602%5D%2C+%5B8.724937%2C+49.357921%5D%2C+%5B8.72524%2C+49.358308%5D%2C+%5B8.725498%2C+49.358663%5D%2C+%5B8.725599%2C+49.358803%5D%2C+%5B8.726016%2C+49.359476%5D%2C+%5B8.726055%2C+49.360045%5D%2C+%5B8.726094%2C+49.360374%5D%2C+%5B8.727113%2C+49.361989%5D%2C+%5B8.727202%2C+49.362889%5D%2C+%5B8.727423%2C+49.364132%5D%2C+%5B8.727717%2C+49.365509%5D%2C+%5B8.728446%2C+49.366441%5D%2C+%5B8.728671%2C+49.366705%5D%2C+%5B8.728942%2C+49.366897%5D%2C+%5B8.730404%2C+49.367933%5D%2C+%5B8.729929%2C+49.368208%5D%2C+%5B8.728541%2C+49.368817%5D%2C+%5B8.72836%2C+49.368682%5D%2C+%5B8.726259%2C+49.369455%5D%2C+%5B8.725357%2C+49.370066%5D%2C+%5B8.725576%2C+49.37022%5D%2C+%5B8.725009%2C+49.371211%5D%2C+%5B8.724729%2C+49.37225%5D%2C+%5B8.724401%2C+49.373496%5D%2C+%5B8.724479%2C+49.373747%5D%2C+%5B8.724841%2C+49.373956%5D%2C+%5B8.727404%2C+49.375554%5D%2C+%5B8.72822%2C+49.374821%5D%2C+%5B8.729138%2C+49.374009%5D%2C+%5B8.730155%2C+49.373179%5D%2C+%5B8.730385%2C+49.373252%5D%2C+%5B8.730507%2C+49.373311%5D%2C+%5B8.731437%2C+49.372716%5D%2C+%5B8.732328%2C+49.372224%5D%2C+%5B8.733929%2C+49.372675%5D%2C+%5B8.735724%2C+49.372956%5D%2C+%5B8.736319%2C+49.373324%5D%2C+%5B8.737564%2C+49.374161%5D%2C+%5B8.738416%2C+49.374491%5D%2C+%5B8.740049%2C+49.374553%5D%2C+%5B8.740729%2C+49.374442%5D%2C+%5B8.741468%2C+49.373924%5D%2C+%5B8.742963%2C+49.373108%5D%2C+%5B8.744141%2C+49.372795%5D%2C+%5B8.745571%2C+49.37295%5D%2C+%5B8.746882%2C+49.373148%5D%2C+%5B8.747531%2C+49.373299%5D%2C+%5B8.747803%2C+49.373403%5D%2C+%5B8.74801%2C+49.373481%5D%2C+%5B8.749031%2C+49.373788%5D%2C+%5B8.749349%2C+49.373809%5D%2C+%5B8.749506%2C+49.373874%5D%2C+%5B8.749682%2C+49.374157%5D%2C+%5B8.749784%2C+49.374269%5D%2C+%5B8.749979%2C+49.37486%5D%2C+%5B8.750254%2C+49.375234%5D%2C+%5B8.750486%2C+49.375439%5D%2C+%5B8.751287%2C+49.375853%5D%2C+%5B8.751986%2C+49.376167%5D%2C+%5B8.752481%2C+49.376371%5D%2C+%5B8.75318%2C+49.376893%5D%2C+%5B8.753542%2C+49.377091%5D%2C+%5B8.754226%2C+49.377357%5D%2C+%5B8.754767%2C+49.377572%5D%2C+%5B8.754718%2C+49.377723%5D%2C+%5B8.754876%2C+49.377766%5D%2C+%5B8.75543%2C+49.377841%5D%2C+%5B8.756198%2C+49.37791%5D%2C+%5B8.756906%2C+49.377922%5D%2C+%5B8.75795%2C+49.377906%5D%2C+%5B8.758486%2C+49.377899%5D%2C+%5B8.758903%2C+49.377943%5D%2C+%5B8.759138%2C+49.377807%5D%2C+%5B8.759187%2C+49.377808%5D%2C+%5B8.759786%2C+49.377905%5D%2C+%5B8.760544%2C+49.378024%5D%2C+%5B8.762615%2C+49.378444%5D%2C+%5B8.763084%2C+49.378532%5D%2C+%5B8.763661%2C+49.378542%5D%2C+%5B8.76537%2C+49.378518%5D%2C+%5B8.766125%2C+49.378539%5D%2C+%5B8.766754%2C+49.378608%5D%2C+%5B8.76849%2C+49.379027%5D%2C+%5B8.76883%2C+49.379193%5D%2C+%5B8.768381%2C+49.379612%5D%2C+%5B8.767516%2C+49.380685%5D%2C+%5B8.766845%2C+49.381341%5D%2C+%5B8.766279%2C+49.382016%5D%2C+%5B8.765944%2C+49.3827%5D%2C+%5B8.76528%2C+49.383389%5D%2C+%5B8.764256%2C+49.384184%5D%2C+%5B8.763735%2C+49.384783%5D%2C+%5B8.76338%2C+49.385218%5D%2C+%5B8.763158%2C+49.385451%5D%2C+%5B8.762978%2C+49.385762%5D%2C+%5B8.762909%2C+49.385993%5D%2C+%5B8.762887%2C+49.386438%5D%2C+%5B8.762991%2C+49.386902%5D%2C+%5B8.762978%2C+49.387249%5D%2C+%5B8.762899%2C+49.387516%5D%2C+%5B8.763192%2C+49.387952%5D%2C+%5B8.764231%2C+49.387498%5D%2C+%5B8.766654%2C+49.387178%5D%2C+%5B8.767235%2C+49.387062%5D%2C+%5B8.767759%2C+49.386865%5D%2C+%5B8.768178%2C+49.386789%5D%2C+%5B8.768518%2C+49.386845%5D%2C+%5B8.768945%2C+49.386974%5D%2C+%5B8.76931%2C+49.387141%5D%2C+%5B8.769787%2C+49.387254%5D%2C+%5B8.770146%2C+49.387651%5D%2C+%5B8.771331%2C+49.388121%5D%2C+%5B8.771843%2C+49.388408%5D%2C+%5B8.772677%2C+49.388667%5D%2C+%5B8.772941%2C+49.388877%5D%2C+%5B8.773016%2C+49.389213%5D%2C+%5B8.773661%2C+49.389392%5D%2C+%5B8.773463%2C+49.389673%5D%2C+%5B8.773409%2C+49.390055%5D%2C+%5B8.77366%2C+49.390523%5D%2C+%5B8.773878%2C+49.390825%5D%2C+%5B8.774229%2C+49.390979%5D%2C+%5B8.774594%2C+49.391209%5D%2C+%5B8.775114%2C+49.391654%5D%2C+%5B8.775375%2C+49.392035%5D%2C+%5B8.775841%2C+49.392457%5D%2C+%5B8.775179%2C+49.393053%5D%2C+%5B8.776011%2C+49.393547%5D%2C+%5B8.776472%2C+49.394054%5D%2C+%5B8.776103%2C+49.394241%5D%2C+%5B8.775839%2C+49.394462%5D%2C+%5B8.775613%2C+49.394778%5D%2C+%5B8.775432%2C+49.39513%5D%2C+%5B8.775357%2C+49.395498%5D%2C+%5B8.775351%2C+49.39589%5D%2C+%5B8.775405%2C+49.396353%5D%2C+%5B8.77561%2C+49.396942%5D%2C+%5B8.775853%2C+49.397499%5D%2C+%5B8.77627%2C+49.398226%5D%2C+%5B8.776723%2C+49.39895%5D%2C+%5B8.777297%2C+49.399896%5D%2C+%5B8.777925%2C+49.401157%5D%2C+%5B8.778345%2C+49.40224%5D%2C+%5B8.779285%2C+49.402018%5D%2C+%5B8.78048%2C+49.4018%5D%2C+%5B8.781842%2C+49.401604%5D%2C+%5B8.783078%2C+49.401452%5D%2C+%5B8.783982%2C+49.401369%5D%2C+%5B8.784682%2C+49.401329%5D%2C+%5B8.785426%2C+49.40138%5D%2C+%5B8.78645%2C+49.401532%5D%2C+%5B8.787479%2C+49.40178%5D%2C+%5B8.789244%2C+49.402355%5D%2C+%5B8.790122%2C+49.40271%5D%2C+%5B8.7907%2C+49.403068%5D%2C+%5B8.791436%2C+49.403734%5D%2C+%5B8.792046%2C+49.404237%5D%2C+%5B8.792756%2C+49.404675%5D%2C+%5B8.793315%2C+49.405004%5D%2C+%5B8.793591%2C+49.405187%5D%2C+%5B8.793708%2C+49.405634%5D%2C+%5B8.793657%2C+49.406063%5D%2C+%5B8.793701%2C+49.40635%5D%2C+%5B8.793964%2C+49.406931%5D%2C+%5B8.79405%2C+49.40719%5D%2C+%5B8.793454%2C+49.408909%5D%2C+%5B8.79312%2C+49.409948%5D%2C+%5B8.793072%2C+49.410423%5D%2C+%5B8.792942%2C+49.411043%5D%2C+%5B8.792821%2C+49.411647%5D%2C+%5B8.792762%2C+49.411853%5D%2C+%5B8.792359%2C+49.412349%5D%2C+%5B8.790377%2C+49.414782%5D%2C+%5B8.790199%2C+49.414964%5D%2C+%5B8.790132%2C+49.415286%5D%2C+%5B8.789943%2C+49.416379%5D%2C+%5B8.78948%2C+49.417608%5D%2C+%5B8.789429%2C+49.418818%5D%2C+%5B8.789394%2C+49.419256%5D%2C+%5B8.789554%2C+49.419831%5D%2C+%5B8.789819%2C+49.420577%5D%2C+%5B8.789964%2C+49.421041%5D%2C+%5B8.790162%2C+49.421213%5D%2C+%5B8.791171%2C+49.42288%5D%2C+%5B8.791273%2C+49.423259%5D%2C+%5B8.790903%2C+49.424051%5D%2C+%5B8.789978%2C+49.425944%5D%2C+%5B8.789643%2C+49.42708%5D%2C+%5B8.78907%2C+49.430067%5D%2C+%5B8.78834%2C+49.431146%5D%2C+%5B8.786537%2C+49.432578%5D%2C+%5B8.779296%2C+49.432764%5D%2C+%5B8.777773%2C+49.432907%5D%2C+%5B8.777268%2C+49.433012%5D%2C+%5B8.776973%2C+49.433155%5D%2C+%5B8.776765%2C+49.433357%5D%2C+%5B8.775986%2C+49.434071%5D%2C+%5B8.774992%2C+49.43454%5D%2C+%5B8.774022%2C+49.434993%5D%2C+%5B8.773641%2C+49.435318%5D%2C+%5B8.773252%2C+49.435419%5D%2C+%5B8.772923%2C+49.435463%5D%2C+%5B8.77217%2C+49.435536%5D%2C+%5B8.77045%2C+49.435737%5D%2C+%5B8.769482%2C+49.436046%5D%2C+%5B8.766398%2C+49.437365%5D%2C+%5B8.766515%2C+49.440274%5D%2C+%5B8.766223%2C+49.440275%5D%2C+%5B8.76637%2C+49.441863%5D%2C+%5B8.766334%2C+49.443584%5D%2C+%5B8.764728%2C+49.446047%5D%2C+%5B8.761766%2C+49.448135%5D%2C+%5B8.761703%2C+49.450618%5D%2C+%5B8.761818%2C+49.450806%5D%2C+%5B8.762051%2C+49.450947%5D%2C+%5B8.763169%2C+49.451433%5D%2C+%5B8.764276%2C+49.451893%5D%2C+%5B8.765277%2C+49.452469%5D%2C+%5B8.766319%2C+49.453103%5D%2C+%5B8.767107%2C+49.453699%5D%2C+%5B8.767706%2C+49.454192%5D%2C+%5B8.765332%2C+49.455547%5D%2C+%5B8.763575%2C+49.456368%5D%2C+%5B8.76329%2C+49.456467%5D%2C+%5B8.762939%2C+49.456488%5D%2C+%5B8.76055%2C+49.456573%5D%2C+%5B8.758634%2C+49.456662%5D%2C+%5B8.757555%2C+49.456702%5D%2C+%5B8.757041%2C+49.457473%5D%2C+%5B8.756618%2C+49.457934%5D%2C+%5B8.756062%2C+49.458405%5D%2C+%5B8.755408%2C+49.458854%5D%2C+%5B8.754686%2C+49.459468%5D%2C+%5B8.754705%2C+49.459642%5D%2C+%5B8.753986%2C+49.459693%5D%2C+%5B8.753099%2C+49.459548%5D%2C+%5B8.75158%2C+49.459204%5D%2C+%5B8.750438%2C+49.458958%5D%2C+%5B8.750091%2C+49.459072%5D%2C+%5B8.748992%2C+49.459252%5D%2C+%5B8.747833%2C+49.459441%5D%2C+%5B8.746352%2C+49.459567%5D%2C+%5B8.74547%2C+49.459614%5D%2C+%5B8.745235%2C+49.459571%5D%2C+%5B8.744884%2C+49.459434%5D%2C+%5B8.744315%2C+49.459159%5D%2C+%5B8.743336%2C+49.458648%5D%2C+%5B8.74322%2C+49.458497%5D%2C+%5B8.74324%2C+49.458378%5D%2C+%5B8.743121%2C+49.458305%5D%2C+%5B8.742643%2C+49.45808%5D%2C+%5B8.741969%2C+49.45777%5D%2C+%5B8.741674%2C+49.457558%5D%2C+%5B8.741746%2C+49.457041%5D%2C+%5B8.741807%2C+49.456563%5D%2C+%5B8.741842%2C+49.456478%5D%2C+%5B8.742048%2C+49.4564%5D%2C+%5B8.74257%2C+49.456328%5D%2C+%5B8.74305%2C+49.456335%5D%2C+%5B8.743558%2C+49.456352%5D%2C+%5B8.744051%2C+49.456283%5D%2C+%5B8.744436%2C+49.456168%5D%2C+%5B8.744628%2C+49.456101%5D%2C+%5B8.744776%2C+49.456069%5D%2C+%5B8.744954%2C+49.456089%5D%2C+%5B8.745101%2C+49.456082%5D%2C+%5B8.745388%2C+49.455974%5D%2C+%5B8.745895%2C+49.455754%5D%2C+%5B8.746052%2C+49.455642%5D%2C+%5B8.746083%2C+49.455363%5D%2C+%5B8.746078%2C+49.455054%5D%2C+%5B8.746063%2C+49.454896%5D%2C+%5B8.745975%2C+49.454771%5D%2C+%5B8.745912%2C+49.454691%5D%2C+%5B8.745943%2C+49.454522%5D%2C+%5B8.746025%2C+49.45416%5D%2C+%5B8.746118%2C+49.453701%5D%2C+%5B8.746201%2C+49.453499%5D%2C+%5B8.746235%2C+49.453234%5D%2C+%5B8.745966%2C+49.452626%5D%2C+%5B8.745586%2C+49.451991%5D%2C+%5B8.744871%2C+49.451023%5D%2C+%5B8.744719%2C+49.450685%5D%2C+%5B8.744556%2C+49.450429%5D%2C+%5B8.744724%2C+49.450278%5D%2C+%5B8.74472%2C+49.450033%5D%2C+%5B8.744778%2C+49.449761%5D%2C+%5B8.745026%2C+49.449477%5D%2C+%5B8.745437%2C+49.449085%5D%2C+%5B8.745681%2C+49.448824%5D%2C+%5B8.745748%2C+49.448674%5D%2C+%5B8.745808%2C+49.448379%5D%2C+%5B8.745854%2C+49.448142%5D%2C+%5B8.745742%2C+49.447418%5D%2C+%5B8.7457%2C+49.446891%5D%2C+%5B8.739206%2C+49.446386%5D%2C+%5B8.739212%2C+49.44694%5D%2C+%5B8.738431%2C+49.448017%5D%2C+%5B8.738008%2C+49.448423%5D%2C+%5B8.737318%2C+49.44906%5D%2C+%5B8.737083%2C+49.449171%5D%2C+%5B8.736852%2C+49.449237%5D%2C+%5B8.736541%2C+49.449242%5D%2C+%5B8.735799%2C+49.449127%5D%2C+%5B8.735152%2C+49.448956%5D%2C+%5B8.734623%2C+49.44883%5D%2C+%5B8.732748%2C+49.448569%5D%2C+%5B8.730015%2C+49.448373%5D%2C+%5B8.726439%2C+49.448213%5D%2C+%5B8.725438%2C+49.448206%5D%2C+%5B8.724195%2C+49.448452%5D%2C+%5B8.723635%2C+49.448579%5D%2C+%5B8.722897%2C+49.448821%5D%2C+%5B8.722459%2C+49.449016%5D%2C+%5B8.722077%2C+49.449185%5D%2C+%5B8.721853%2C+49.449345%5D%2C+%5B8.721696%2C+49.449503%5D%2C+%5B8.721441%2C+49.449815%5D%2C+%5B8.721023%2C+49.450238%5D%2C+%5B8.720491%2C+49.450545%5D%2C+%5B8.720086%2C+49.450745%5D%2C+%5B8.719614%2C+49.451065%5D%2C+%5B8.718989%2C+49.451482%5D%2C+%5B8.718324%2C+49.451829%5D%2C+%5B8.717828%2C+49.452039%5D%2C+%5B8.717415%2C+49.452118%5D%2C+%5B8.716995%2C+49.452187%5D%2C+%5B8.716368%2C+49.452291%5D%2C+%5B8.715647%2C+49.452383%5D%2C+%5B8.715174%2C+49.45242%5D%2C+%5B8.714813%2C+49.452338%5D%2C+%5B8.714396%2C+49.452172%5D%2C+%5B8.714027%2C+49.451964%5D%2C+%5B8.713729%2C+49.451763%5D%2C+%5B8.713448%2C+49.451547%5D%2C+%5B8.71308%2C+49.451414%5D%2C+%5B8.712981%2C+49.451337%5D%2C+%5B8.712907%2C+49.451188%5D%2C+%5B8.712618%2C+49.450635%5D%2C+%5B8.712221%2C+49.450263%5D%2C+%5B8.712063%2C+49.450181%5D%2C+%5B8.711923%2C+49.450062%5D%2C+%5B8.711712%2C+49.449848%5D%2C+%5B8.711383%2C+49.449483%5D%2C+%5B8.710697%2C+49.449013%5D%2C+%5B8.709519%2C+49.447725%5D%2C+%5B8.709467%2C+49.447501%5D%2C+%5B8.709412%2C+49.446647%5D%2C+%5B8.709325%2C+49.446198%5D%2C+%5B8.708958%2C+49.446156%5D%2C+%5B8.708062%2C+49.445948%5D%2C+%5B8.707527%2C+49.44589%5D%2C+%5B8.706733%2C+49.445857%5D%2C+%5B8.706043%2C+49.445872%5D%2C+%5B8.705379%2C+49.445924%5D%2C+%5B8.704486%2C+49.446022%5D%2C+%5B8.703989%2C+49.446%5D%2C+%5B8.703226%2C+49.44592%5D%2C+%5B8.702235%2C+49.445819%5D%2C+%5B8.700441%2C+49.445474%5D%2C+%5B8.698009%2C+49.445025%5D%2C+%5B8.696864%2C+49.444866%5D%2C+%5B8.696436%2C+49.444666%5D%2C+%5B8.695967%2C+49.444555%5D%2C+%5B8.695515%2C+49.444586%5D%2C+%5B8.693686%2C+49.444206%5D%2C+%5B8.692734%2C+49.444117%5D%2C+%5B8.692166%2C+49.444018%5D%2C+%5B8.691707%2C+49.443845%5D%2C+%5B8.691244%2C+49.44365%5D%2C+%5B8.690496%2C+49.443236%5D%2C+%5B8.68937%2C+49.443263%5D%2C+%5B8.687857%2C+49.443212%5D%2C+%5B8.687569%2C+49.443035%5D%2C+%5B8.687363%2C+49.443008%5D%2C+%5B8.686799%2C+49.443048%5D%2C+%5B8.686065%2C+49.443213%5D%2C+%5B8.685572%2C+49.443319%5D%2C+%5B8.685446%2C+49.443329%5D%2C+%5B8.68496%2C+49.443355%5D%2C+%5B8.684607%2C+49.44354%5D%2C+%5B8.6843%2C+49.443671%5D%2C+%5B8.683887%2C+49.443768%5D%2C+%5B8.683496%2C+49.443878%5D%2C+%5B8.682964%2C+49.444%5D%2C+%5B8.682677%2C+49.443971%5D%2C+%5B8.682335%2C+49.443862%5D%2C+%5B8.682116%2C+49.443773%5D%2C+%5B8.681657%2C+49.443692%5D%2C+%5B8.681244%2C+49.443675%5D%2C+%5B8.680796%2C+49.443534%5D%2C+%5B8.680393%2C+49.443483%5D%2C+%5B8.67967%2C+49.443133%5D%2C+%5B8.679113%2C+49.44302%5D%2C+%5B8.679192%2C+49.442698%5D%2C+%5B8.678359%2C+49.442592%5D%2C+%5B8.678334%2C+49.442624%5D%2C+%5B8.677207%2C+49.442494%5D%2C+%5B8.677012%2C+49.442391%5D%2C+%5B8.676933%2C+49.442349%5D%2C+%5B8.676097%2C+49.442199%5D%2C+%5B8.675185%2C+49.442035%5D%2C+%5B8.674777%2C+49.441968%5D%2C+%5B8.673293%2C+49.441504%5D%2C+%5B8.672861%2C+49.441253%5D%2C+%5B8.67274%2C+49.441326%5D%2C+%5B8.672341%2C+49.441125%5D%2C+%5B8.671575%2C+49.440834%5D%2C+%5B8.670761%2C+49.441343%5D%2C+%5B8.67033%2C+49.441494%5D%2C+%5B8.669915%2C+49.441467%5D%2C+%5B8.668932%2C+49.441262%5D%2C+%5B8.667104%2C+49.440835%5D%2C+%5B8.666264%2C+49.440772%5D%2C+%5B8.665848%2C+49.44064%5D%2C+%5B8.665677%2C+49.440536%5D%2C+%5B8.665516%2C+49.440349%5D%2C+%5B8.665451%2C+49.4403%5D%2C+%5B8.665403%2C+49.440276%5D%2C+%5B8.665344%2C+49.440267%5D%2C+%5B8.665214%2C+49.440227%5D%2C+%5B8.663494%2C+49.439941%5D%2C+%5B8.663245%2C+49.439948%5D%2C+%5B8.663238%2C+49.439857%5D%2C+%5B8.663046%2C+49.43963%5D%2C+%5B8.662637%2C+49.439686%5D%2C+%5B8.662439%2C+49.439689%5D%2C+%5B8.662374%2C+49.439664%5D%2C+%5B8.661735%2C+49.439538%5D%2C+%5B8.66046%2C+49.439285%5D%2C+%5B8.658385%2C+49.438873%5D%2C+%5B8.658267%2C+49.439039%5D%2C+%5B8.657003%2C+49.438758%5D%2C+%5B8.656308%2C+49.438606%5D%2C+%5B8.65531%2C+49.439943%5D%2C+%5B8.653394%2C+49.439318%5D%2C+%5B8.649054%2C+49.437866%5D%2C+%5B8.648862%2C+49.437785%5D%2C+%5B8.648968%2C+49.437693%5D%2C+%5B8.648204%2C+49.437252%5D%2C+%5B8.647218%2C+49.436878%5D%2C+%5B8.646552%2C+49.436626%5D%2C+%5B8.646193%2C+49.436973%5D%2C+%5B8.646016%2C+49.437132%5D%2C+%5B8.645786%2C+49.437345%5D%2C+%5B8.645488%2C+49.437604%5D%2C+%5B8.645159%2C+49.437851%5D%2C+%5B8.644754%2C+49.438187%5D%2C+%5B8.644168%2C+49.438623%5D%2C+%5B8.643741%2C+49.438944%5D%2C+%5B8.643149%2C+49.439309%5D%2C+%5B8.64261%2C+49.43961%5D%2C+%5B8.642565%2C+49.439635%5D%2C+%5B8.642246%2C+49.439785%5D%2C+%5B8.641292%2C+49.440204%5D%2C+%5B8.64031%2C+49.440607%5D%2C+%5B8.639305%2C+49.44098%5D%2C+%5B8.638212%2C+49.441336%5D%2C+%5B8.637172%2C+49.441631%5D%2C+%5B8.636078%2C+49.441893%5D%2C+%5B8.634983%2C+49.442126%5D%2C+%5B8.633858%2C+49.442342%5D%2C+%5B8.632702%2C+49.442524%5D%2C+%5B8.631601%2C+49.44272%5D%2C+%5B8.630453%2C+49.442879%5D%2C+%5B8.629367%2C+49.443018%5D%2C+%5B8.628703%2C+49.443115%5D%2C+%5B8.628211%2C+49.441976%5D%2C+%5B8.628012%2C+49.44157%5D%2C+%5B8.627351%2C+49.440827%5D%2C+%5B8.626819%2C+49.440265%5D%2C+%5B8.626616%2C+49.440059%5D%2C+%5B8.626743%2C+49.439998%5D%2C+%5B8.626134%2C+49.439394%5D%2C+%5B8.62331%2C+49.436631%5D%2C+%5B8.623037%2C+49.436356%5D%2C+%5B8.622925%2C+49.436225%5D%2C+%5B8.622831%2C+49.436102%5D%2C+%5B8.62272%2C+49.435915%5D%2C+%5B8.622619%2C+49.43575%5D%2C+%5B8.622521%2C+49.435595%5D%2C+%5B8.622406%2C+49.435412%5D%2C+%5B8.622309%2C+49.435279%5D%2C+%5B8.622204%2C+49.435144%5D%2C+%5B8.621395%2C+49.434225%5D%2C+%5B8.621165%2C+49.433964%5D%2C+%5B8.621049%2C+49.433843%5D%2C+%5B8.620927%2C+49.433893%5D%2C+%5B8.619493%2C+49.432264%5D%2C+%5B8.61626%2C+49.428621%5D%2C+%5B8.615974%2C+49.428303%5D%2C+%5B8.61531%2C+49.427884%5D%2C+%5B8.609952%2C+49.424382%5D%2C+%5B8.609733%2C+49.424242%5D%2C+%5B8.605472%2C+49.425826%5D%2C+%5B8.599884%2C+49.427972%5D%2C+%5B8.598382%2C+49.428508%5D%2C+%5B8.59849%2C+49.428044%5D%2C+%5B8.59823%2C+49.428143%5D%2C+%5B8.593259%2C+49.430025%5D%2C+%5B8.592963%2C+49.430133%5D%2C+%5B8.590778%2C+49.427735%5D%2C+%5B8.59045%2C+49.427367%5D%2C+%5B8.590054%2C+49.427347%5D%2C+%5B8.589757%2C+49.427329%5D%2C+%5B8.589435%2C+49.427296%5D%2C+%5B8.588442%2C+49.427151%5D%2C+%5B8.587764%2C+49.427038%5D%2C+%5B8.58724%2C+49.426958%5D%2C+%5B8.587079%2C+49.426934%5D%2C+%5B8.586232%2C+49.426846%5D%2C+%5B8.584079%2C+49.4266%5D%2C+%5B8.583508%2C+49.426541%5D%2C+%5B8.582919%2C+49.426506%5D%2C+%5B8.582023%2C+49.426473%5D%2C+%5B8.581379%2C+49.42645%5D%2C+%5B8.579833%2C+49.426199%5D%2C+%5B8.577791%2C+49.425274%5D%2C+%5B8.577288%2C+49.425085%5D%2C+%5B8.575385%2C+49.424356%5D%2C+%5B8.57529%2C+49.424422%5D%2C+%5B8.574243%2C+49.424021%5D%2C+%5B8.573179%2C+49.4236%5D%5D%5D%7D%2C+%22properties%22%3A+%7B%22osm_id%22%3A+-285864%2C+%22boundary%22%3A+%22administrative%22%2C+%22admin_level%22%3A+6%2C+%22parents%22%3A+%22-22027%2C-62611%2C-51477%22%2C+%22name%22%3A+%22Heidelberg%22%2C+%22local_name%22%3A+%22Heidelberg%22%2C+%22name_en%22%3A+null%7D%7D%5D%7D&filter2=Height + headers: + accept: + - '*/*' + accept-encoding: + - gzip, deflate + connection: + - keep-alive + content-length: + - '30549' + content-type: + - application/x-www-form-urlencoded + host: + - api.ohsome.org + user-agent: + - ohsome-quality-api/1.7.0 + method: POST + uri: https://api.ohsome.org/v1/elements/count/ratio + response: + content: "{\n \"timestamp\" : \"2024-11-14T23:03:07.386881524\",\n \"status\" + : 400,\n \"message\" : \"Invalid filter syntax. Please look at the additional + info and examples about the filter parameter at https://docs.ohsome.org/ohsome-api. + Detailed error message: line 1, column 7: whitespaces, EQUALS (=), NOT_EQUALS + (!=) or in expected, EOF encountered.\",\n \"requestUrl\" : \"https://api.ohsome.org/v1/elements/count/ratio\"\n}" + headers: + access-control-allow-credentials: + - 'true' + access-control-allow-headers: + - Origin,Accept,X-Requested-With,Content-Type,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization + access-control-allow-methods: + - POST, GET + access-control-allow-origin: + - '*' + access-control-max-age: + - '3600' + cache-control: + - no-cache, no-store, must-revalidate + connection: + - close + content-encoding: + - gzip + content-type: + - application/json + date: + - Thu, 14 Nov 2024 23:03:07 GMT + server: + - Apache + strict-transport-security: + - max-age=63072000; includeSubdomains; + transfer-encoding: + - chunked + vary: + - accept-encoding + http_version: HTTP/1.1 + status_code: 400 +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + User-Agent: + - python-requests/2.32.3 + method: GET + uri: https://github.com/VerifyTests/EmptyFiles/raw/main/index/empty.txt + response: + body: + string: "\n\n\n\n\n\n\n\n\n\n\n\n \n \n + \ \n \n \n \n + \ \n + \ \n\n + \ \n\n \n\n\n \n\n \n \n \n \n \n\n \n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n + \ \n\n Page not found \xB7 GitHub \xB7 GitHub\n\n\n\n \n \n \n\n + \ \n \n\n\n + \ \n\n\n \n\n\n \n \n\n \n + \ \n\n \n\n\n\n \n\n \n\n\n\n\n \n\n \n\n + \ \n\n \n\n \n\n \n\n \n \n \n\n \n \n \n \n + \ \n + \ \n \n \n + \ \n + \ \n \n \n + \ \n + \ \n \n \n\n + \ \n \n \n + \ \n \n \n + \ \n \n + \ \n \n\n\n\n\n \n\n\n\n + \ \n\n\n \n \n \n \n\n \n\n \n \n \n \n \n\n\n\n \n\n\n \n\n\n + \ \n\n + \ \n\n + \ \n \n + \ \n\n\n\n\n\n \n\n + \ \n\n \n
\n \n\n\n
\n Skip to content\n\n + \ \n \n + \ \n \n \n\n\n\n\n\n\n\n\n\n\n\n \n \n + \
\n\n\n\n\n\n + \ \n\n \n\n \n\n\n
\n

Navigation Menu

\n\n \n\n + \
\n
\n
\n + \ \n
\n\n \n + \ \n + \ \n\n + \ \n\n
\n \n Sign in\n \n
\n
\n\n\n + \
\n
\n + \ \n\n
\n \n\n\n\n \n \n
\n \n \n\n + \
\n Search + or jump to...\n
\n + \ \n\n + \
\n \n\n \n\n \n
\n \n + \

Search + code, repositories, users, issues, pull requests...

\n
\n \n
+ \
\n
\n \n
\n \n \n \n \n \n\n \n
\n
\n
\n
\n + \ \n
\n + \
\n Clear\n + \ \n\n + \
\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n + \
\n \n + \
\n + \
\n
\n\n \n
\n
\n\n
\n
\n + \
\n \n + \
\n \n\n \n
\n + \
\n
\n + \

\n Provide + feedback\n

\n \n
\n
\n + \ \n
\n
\n + \ \n
\n \n + \
\n

We read every piece of feedback, and take your input very + seriously.

\n \n \n + \ \n
\n
\n + \ \n
\n\n \n \n\n + \ \n
\n
\n + \
\n

\n Saved searches\n

\n + \

Use + saved searches to filter your results more quickly

\n
\n
\n \n + \
\n
\n \n
\n \n + \
\n\n \n\n
\n + \
\n
\n\n
\n + \
\n \n
\n + \
\n
\n\n\n
\n \n Sign in\n \n + \
\n
\n

Sign in to GitHub\n

\n \n
\n\n \n \n\n + \
\n \n \n Forgot password?\n + \ \n\n\n\n\n\n\n\n\n\n\n \n
\n
\n\n\n
+ \
\n\n \n Sign + up\n \n \n
\n + \
\n
\n \n\n\n \n \n\n + \
\n\n\n\n\n\n\n\n\n + \
\n\n\n\n\n + \ \n
\n\n\n + \ \n \n\n\n\n\n\n + \ \n
\n \n\n\n
\n
\n + \ \"\"\n + \
\n
\n \"404\n\n + \ \"\"\n\n + \ \"\"\n\n + \ \"\"\n\n + \ \"\"\n\n + \ \"\"\n\n + \ \"\"\n + \
\n
\n\n
\n
\n \n
\n + \ \n \n
\n
\n \n
\n\n
\n\n + \ \n\n \n\n\n\n\n + \ \n\n\n + \ \n\n + \ \n\n
\n + \
\n
\n
\n\n \n\n\n\n\n\n \n\n
\n + \
\n \n\n\n" + headers: + cache-control: + - no-cache + content-encoding: + - gzip + content-length: + - '123403' + content-security-policy: + - 'default-src ''none''; base-uri ''self''; child-src github.com/assets-cdn/worker/ + github.com/webpack/ github.com/assets/ gist.github.com/assets-cdn/worker/; + connect-src ''self'' uploads.github.com www.githubstatus.com collector.github.com + raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com + github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com + *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com + objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com + proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com + wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ + productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ + productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ + productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ + productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ + productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ + productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ + productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ + productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ + productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ + productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com + github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com + wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com + api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src + github.githubassets.com; form-action ''self'' github.com gist.github.com copilot-workspace.githubnext.com + objects-origin.githubusercontent.com; frame-ancestors ''none''; frame-src + viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src + ''self'' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com + identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com + github-cloud.s3.amazonaws.com objects.githubusercontent.com secured-user-images.githubusercontent.com/ + user-images.githubusercontent.com/ private-user-images.githubusercontent.com + opengraph.githubassets.com github-production-user-asset-6210df.s3.amazonaws.com + customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com + *.githubusercontent.com; manifest-src ''self''; media-src github.com user-images.githubusercontent.com/ + secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com + github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src + github.githubassets.com; style-src ''unsafe-inline'' github.githubassets.com; + upgrade-insecure-requests; worker-src github.com/assets-cdn/worker/ github.com/webpack/ + github.com/assets/ gist.github.com/assets-cdn/worker/' + content-type: + - text/html; charset=utf-8 + date: + - Thu, 14 Nov 2024 23:19:45 GMT + referrer-policy: + - no-referrer-when-downgrade + server: + - GitHub.com + strict-transport-security: + - max-age=31536000; includeSubdomains; preload + vary: + - X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, Accept-Encoding, Accept, + X-Requested-With + x-content-type-options: + - nosniff + x-frame-options: + - deny + x-github-request-id: + - 6D1D:1180CF:549F73F:562EA60:673685C1 + x-xss-protection: + - '0' + status: + code: 404 + message: Not Found version: 1 diff --git a/tests/integrationtests/indicators/test_attribute_completeness.py b/tests/integrationtests/indicators/test_attribute_completeness.py index 53d6b1b47..63404e91b 100644 --- a/tests/integrationtests/indicators/test_attribute_completeness.py +++ b/tests/integrationtests/indicators/test_attribute_completeness.py @@ -6,22 +6,50 @@ import plotly.graph_objects as pgo import plotly.io as pio import pytest +from approvaltests import verify from ohsome_quality_api.indicators.attribute_completeness.indicator import ( AttributeCompleteness, ) -from tests.integrationtests.utils import get_topic_fixture, oqapi_vcr +from tests.integrationtests.utils import PytestNamer, get_topic_fixture, oqapi_vcr + + +class TestInit: + @oqapi_vcr.use_cassette + def test_preprocess_missing_parameter( + self, topic_building_count, feature_germany_heidelberg + ): + with pytest.raises(TypeError): + AttributeCompleteness( + topic_building_count, + feature_germany_heidelberg, + ) + + def test_preprocess_too_many_parameter( + self, + topic_building_count, + feature_germany_heidelberg, + attribute_key, + attribute_filter, + ): + with pytest.raises(TypeError): + AttributeCompleteness( + topic_building_count, + feature_germany_heidelberg, + attribute_key, + attribute_filter, + ) class TestPreprocess: @oqapi_vcr.use_cassette - def test_preprocess( + def test_preprocess_attribute_keys_single( self, topic_building_count, feature_germany_heidelberg, attribute_key ): indicator = AttributeCompleteness( topic_building_count, feature_germany_heidelberg, - attribute_key, + attribute_keys=attribute_key, ) asyncio.run(indicator.preprocess()) assert indicator.result.value is not None @@ -29,34 +57,65 @@ def test_preprocess( assert isinstance(indicator.result.timestamp_osm, datetime) @oqapi_vcr.use_cassette - def test_preprocess_multiple_attribute_keys( + def test_preprocess_attribute_keys_multiple( self, topic_building_count, feature_germany_heidelberg, attribute_key_multiple ): indicator = AttributeCompleteness( topic_building_count, feature_germany_heidelberg, - attribute_key_multiple, + attribute_keys=attribute_key_multiple, ) asyncio.run(indicator.preprocess()) assert indicator.result.value is not None assert isinstance(indicator.result.timestamp, datetime) assert isinstance(indicator.result.timestamp_osm, datetime) - -class TestCalculation: - @pytest.fixture(scope="class") @oqapi_vcr.use_cassette - def indicator( + def test_preprocess_attribute_filter( self, topic_building_count, feature_germany_heidelberg, - attribute_key, + attribute_filter, + attribute_names, ): - i = AttributeCompleteness( + indicator = AttributeCompleteness( topic_building_count, feature_germany_heidelberg, - attribute_key, + attribute_filter=attribute_filter, + attribute_names=attribute_names, ) + asyncio.run(indicator.preprocess()) + assert indicator.result.value is not None + assert isinstance(indicator.result.timestamp, datetime) + assert isinstance(indicator.result.timestamp_osm, datetime) + + +class TestCalculation: + @pytest.fixture( + scope="class", + params=( + ["height"], + { + "attribute_filter": "height=* or building:levels=*", + "attribute_names": ["Height"], + }, + ), + ) + @oqapi_vcr.use_cassette + def indicator(self, request, topic_building_count, feature_germany_heidelberg): + if isinstance(request.param, list): + i = AttributeCompleteness( + topic_building_count, + feature_germany_heidelberg, + attribute_keys=request.param, + ) + else: + i = AttributeCompleteness( + topic_building_count, + feature_germany_heidelberg, + attribute_filter=request.param["attribute_filter"], + attribute_names=request.param["attribute_names"], + ) asyncio.run(i.preprocess()) i.calculate() return i @@ -69,8 +128,8 @@ def test_calculate(self, indicator): assert isinstance(indicator.result.timestamp, datetime) assert isinstance(indicator.result.timestamp_osm, datetime) - @oqapi_vcr.use_cassette() - def test_no_features(self, attribute): + @oqapi_vcr.use_cassette + def test_no_features(self): """Test area with no features""" infile = os.path.join( os.path.dirname(os.path.abspath(__file__)), @@ -95,26 +154,37 @@ def test_no_features(self, attribute): class TestFigure: - @pytest.fixture(scope="class") + @pytest.fixture( + scope="class", + params=( + ["height"], + { + "attribute_filter": "height=* or building:levels=*", + "attribute_names": ["Height"], + }, + ), + ) @oqapi_vcr.use_cassette def indicator( self, + request, topic_building_count, feature_germany_heidelberg, - attribute_key, ): - indicator = AttributeCompleteness( - topic_building_count, - feature_germany_heidelberg, - attribute_key, - ) + if isinstance(request.param, list): + indicator = AttributeCompleteness( + topic_building_count, feature_germany_heidelberg, request.param + ) + else: + indicator = AttributeCompleteness( + topic_building_count, + feature_germany_heidelberg, + attribute_filter=request.param["attribute_filter"], + attribute_names=request.param["attribute_names"], + ) asyncio.run(indicator.preprocess()) indicator.calculate() - assert indicator.description == ( - '28.8% of all "building count" features (all: 29936 elements)' - " in your area of interest have the selected additional attribute" - " height of buildings (matched: 8630 elements). " - ) + verify(indicator.description, namer=PytestNamer()) return indicator # comment out for manual test @@ -129,7 +199,7 @@ def test_create_figure(self, indicator): pgo.Figure(indicator.result.figure) # test for valid Plotly figure -def test_create_description(): +def test_create_description_attribute_keys_single(): indicator = AttributeCompleteness( get_topic_fixture("building-count"), "foo", @@ -139,14 +209,10 @@ def test_create_description(): indicator.absolute_value_1 = 10 indicator.absolute_value_2 = 2 indicator.create_description() - assert indicator.description == ( - '20.0% of all "building count" features (all: 10 elements) in your area of ' - "interest have the selected additional attribute height of buildings " - "(matched: 2 elements). " - ) + verify(indicator.description, namer=PytestNamer()) -def test_create_description_multiple_attributes(): +def test_create_description_attribute_keys_multiple(): indicator = AttributeCompleteness( get_topic_fixture("building-count"), "foo", @@ -156,11 +222,21 @@ def test_create_description_multiple_attributes(): indicator.absolute_value_1 = 10 indicator.absolute_value_2 = 2 indicator.create_description() - assert indicator.description == ( - '20.0% of all "building count" features (all: 10 elements) in your area of ' - "interest have the selected additional attributes height of buildings, house " - "number, street address (matched: 2 elements). " + verify(indicator.description, namer=PytestNamer()) + + +def test_create_description_attribute_filter(attribute_filter, attribute_names): + indicator = AttributeCompleteness( + get_topic_fixture("building-count"), + "foo", + attribute_filter=attribute_filter, + attribute_names=attribute_names, ) + indicator.result.value = 0.2 + indicator.absolute_value_1 = 10 + indicator.absolute_value_2 = 2 + indicator.create_description() + verify(indicator.description, namer=PytestNamer()) @pytest.mark.parametrize(