diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index f606b65c..00000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-spreg/_version.py export-subst
diff --git a/.github/release.yml b/.github/release.yml
new file mode 100644
index 00000000..f5435449
--- /dev/null
+++ b/.github/release.yml
@@ -0,0 +1,16 @@
+changelog:
+ exclude:
+ labels:
+ - ignore-for-release
+ authors:
+ - dependabot
+ categories:
+ - title: Bug Fixes
+ labels:
+ - bug
+ - title: Enhancements
+ labels:
+ - enhancement
+ - title: Other Changes
+ labels:
+ - "*"
diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml
index 64d1b201..fe8fbedd 100644
--- a/.github/workflows/build_docs.yml
+++ b/.github/workflows/build_docs.yml
@@ -1,44 +1,48 @@
name: Build Docs
-
on:
push:
- # Sequence of patterns matched against refs/tags
- tags:
- - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10
- workflow_dispatch:
- inputs:
- version:
- description: Manual Doc Build Reason
- default: test
- required: false
+ branches:
+ - master
+ - main
jobs:
docs:
- name: build & push docs
+ name: CI (${{ matrix.os }}-${{ matrix.environment-file }})
runs-on: ${{ matrix.os }}
- timeout-minutes: 90
+ continue-on-error: ${{ matrix.experimental }}
+ timeout-minutes: 20
strategy:
matrix:
os: ['ubuntu-latest']
- environment-file: [ci/310.yaml]
+ environment-file: [ci/39.yaml]
experimental: [false]
defaults:
run:
shell: bash -l {0}
-
steps:
- - name: checkout repo
- uses: actions/checkout@v3
-
- - name: setup micromamba
- uses: mamba-org/provision-with-micromamba@main
+ - uses: actions/checkout@v4
+ - uses: actions/cache@v3
+ env:
+ CACHE_NUMBER: 0
with:
- environment-file: ${{ matrix.environment-file }}
- micromamba-version: 'latest'
-
- - name: make docs
- run: cd docs; make html
-
- - name: commit docs
+ path: ~/conda_pkgs_dir
+ key: ${{ matrix.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles(matrix.environment-file) }}
+ - uses: conda-incubator/setup-miniconda@v2
+ with:
+ miniconda-version: 'latest'
+ channels: conda-forge
+ channel-priority: true
+ auto-update-conda: true
+ auto-activate-base: false
+ environment-file: ${{ matrix.environment-file }}
+ activate-environment: test
+ use-only-tar-bz2: true
+ - run: conda info --all
+ - run: conda list
+ - run: conda config --show-sources
+ - run: conda config --show
+ - run: pip install -e . --no-deps --force-reinstall
+ - run: cd docs; make html
+ - name: Commit documentation changes
run: |
git clone https://github.com/ammaraskar/sphinx-action-test.git --branch gh-pages --single-branch gh-pages
cp -r docs/_build/html/* gh-pages/
@@ -47,10 +51,9 @@
git config --local user.name "GitHub Action"
git add .
git commit -m "Update documentation" -a || true
- # The above command will fail if no changes were present,
- # so we ignore the return code.
-
- - name: push to gh-pages
+ # The above command will fail if no changes were present, so we ignore
+ # the return code.
+ - name: Push changes
uses: ad-m/github-push-action@master
with:
branch: gh-pages
diff --git a/.github/workflows/release_and_publish.yml b/.github/workflows/release_and_publish.yml
index 319ad8ac..4993b64d 100644
--- a/.github/workflows/release_and_publish.yml
+++ b/.github/workflows/release_and_publish.yml
@@ -7,59 +7,52 @@
# under the user's name, not the organzation.
#--------------------------------------------------
- name: Release & Publish
+name: Release & Publish
- on:
- push:
- # Sequence of patterns matched against refs/tags
- tags:
- - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
-
- jobs:
- build:
- name: Create release & publish to PyPI
- runs-on: ubuntu-latest
- steps:
- - name: Checkout repo
- uses: actions/checkout@v3
-
- - name: Set up python
- uses: actions/setup-python@v4
- with:
- python-version: "3.x"
-
- - name: Install Dependencies
- run: |
- python -m pip install --upgrade pip
- pip install setuptools wheel twine jupyter urllib3 pandas pyyaml versioneer
- python setup.py sdist bdist_wheel
-
- - name: run Changelog
- run: |
- jupyter nbconvert --to notebook --execute --inplace --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 tools/gitcount.ipynb
-
- - name: cat Changelog
- uses: pCYSl5EDgo/cat@master
- id: changetxt
- with:
- path: ./tools/changelog.md
- env:
- TEXT: ${{ steps.changetxt.outputs.text }}
-
- - name: Get the tag name
- run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
-
- - name: Release
- uses: softprops/action-gh-release@v1
- with:
- body: ${{ steps.changetxt.outputs.text }}
- body_path: ${{ steps.changetxt.outputs.path }}
- name: Release ${{ env.TAG }}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- - name: Publish distribution 📦 to PyPI
- uses: pypa/gh-action-pypi-publish@master
- with:
- user: __token__
- password: ${{ secrets.PYPI_PASSWORD }}
+on:
+ push:
+ # Sequence of patterns matched against refs/tags
+ tags:
+ - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
+ workflow_dispatch:
+ inputs:
+ version:
+ description: Manual Release
+ default: test
+ required: false
+
+jobs:
+ build:
+ name: Create release & publish to PyPI
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v4
+
+ - name: Set up python
+ uses: actions/setup-python@v4
+ with:
+ python-version: "3.x"
+
+ - name: Install Dependencies
+ run: |
+ python -m pip install --upgrade pip
+ python -m pip install --upgrade build twine
+ python -m build
+ twine check --strict dist/*
+
+ - name: Create Release Notes
+ uses: actions/github-script@v6
+ with:
+ github-token: ${{secrets.GITHUB_TOKEN}}
+ script: |
+ await github.request(`POST /repos/${{ github.repository }}/releases`, {
+ tag_name: "${{ github.ref }}",
+ generate_release_notes: true
+ });
+
+ - name: Publish distribution 📦 to PyPI
+ uses: pypa/gh-action-pypi-publish@release/v1
+ with:
+ user: __token__
+ password: ${{ secrets.PYPI_PASSWORD }}
\ No newline at end of file
diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml
index dcfc27e5..2d4b7de8 100644
--- a/.github/workflows/unittests.yml
+++ b/.github/workflows/unittests.yml
@@ -21,11 +21,11 @@
matrix:
os: [ubuntu-latest]
environment-file:
- - ci/38.yaml
- ci/39.yaml
- ci/310.yaml
- ci/310-BASE.yaml
- ci/310-DEV.yaml
+ - ci/311.yaml
include:
- environment-file: ci/310.yaml
os: macos-latest
@@ -34,7 +34,7 @@
steps:
- name: checkout repo
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: setup micromamba
uses: mamba-org/provision-with-micromamba@main
@@ -44,7 +44,7 @@
- name: install bleeding edge libpysal (only Ubuntu / Python 3.9)
shell: bash -l {0}
- run: pip install git+https://github.com/pysal/libpysal.git@master
+ run: pip install git+https://github.com/pysal/libpysal.git@main
if: matrix.os == 'ubuntu-latest' && contains(matrix.environment-file, 'DEV')
- name: run tests - bash
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644
index 386dbca8..00000000
--- a/MANIFEST.in
+++ /dev/null
@@ -1,3 +0,0 @@
-include LICENSE.txt MANIFEST.in requirements_tests.txt requirements_docs.txt requirements_plus.txt requirements.txt
-include versioneer.py
-include spreg/_version.py
diff --git a/Makefile b/Makefile
deleted file mode 100644
index dafea398..00000000
--- a/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# developer Makefile for repeated tasks
-#
-.PHONY: clean
-
-test:
- nosetests
-
-doctest:
- cd doc; make pickle; make doctest
-
-install:
- python setup.py install >/dev/null
-
-src:
- python setup.py sdist >/dev/null
-
-win:
- python setup.py bdist_wininst >/dev/null
-
-clean:
- find . -name "*.pyc" -exec rm '{}' ';'
- find spreg -name "__pycache__" -exec rm -rf '{}' ';'
- rm -rf dist
- rm -rf build
diff --git a/ci/38.yaml b/ci/311.yaml
similarity index 96%
rename from ci/38.yaml
rename to ci/311.yaml
index ead6ee36..bc295d06 100644
--- a/ci/38.yaml
+++ b/ci/311.yaml
@@ -2,7 +2,7 @@ name: test
channels:
- conda-forge
dependencies:
- - python=3.8
+ - python=3.11
# required
- libpysal
- numpy>=1.3
diff --git a/docs/api.rst b/docs/api.rst
index e70fc232..abd4e60c 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -47,6 +47,7 @@ Regimes models are variants of spatial regression models which allow for structu
:toctree: generated/
spreg.OLS_Regimes
+ spreg.TSLS_Regimes
spreg.ML_Lag_Regimes
spreg.ML_Error_Regimes
spreg.GM_Lag_Regimes
@@ -59,6 +60,7 @@ Regimes models are variants of spatial regression models which allow for structu
spreg.GM_Endog_Error_Regimes
spreg.GM_Endog_Error_Hom_Regimes
spreg.GM_Endog_Error_Het_Regimes
+ spreg.Skater_reg
Seemingly-Unrelated Regressions
--------------------------------
@@ -74,17 +76,6 @@ Seemingly-unrelated regression models are a generalization of linear regression.
spreg.SURlagIV
spreg.ThreeSLS
-Panel Models
-------------
-
-.. autosummary::
- :toctree: generated/
-
- spreg.Panel_FE_Lag
- spreg.Panel_FE_Error
- spreg.Panel_RE_Lag
- spreg.Panel_RE_Error
-
Spatial Panel Models
--------------------
@@ -93,6 +84,10 @@ Spatial panel models allow for evaluating correlation in both spatial and time d
.. autosummary::
:toctree: generated/
+ spreg.Panel_FE_Lag
+ spreg.Panel_FE_Error
+ spreg.Panel_RE_Lag
+ spreg.Panel_RE_Error
spreg.GM_KKP
Diagnostics
@@ -128,3 +123,8 @@ Diagnostic tests are useful for identifying model fit, sufficiency, and specific
spreg.surLMe
spreg.surLMlag
spreg.constant_check
+ spreg.panel_LMlag
+ spreg.panel_LMerror
+ spreg.panel_rLMlag
+ spreg.panel_rLMerror
+ spreg.panel_Hausman
diff --git a/docs/conf.py b/docs/conf.py
index 9e1d3fb8..3bcf078d 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -16,12 +16,8 @@
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
-import sys, os
import sphinx_bootstrap_theme
-
-sys.path.insert(0, os.path.abspath("../"))
-
# import your package to obtain the version info to display on the docs website
import spreg
diff --git a/docs/tutorials.rst b/docs/tutorials.rst
index a2a450a0..b3f6e1b1 100644
--- a/docs/tutorials.rst
+++ b/docs/tutorials.rst
@@ -15,3 +15,9 @@ Tutorials
:caption: Spatial Panel Models with Fixed Effects
notebooks/Panel_FE_example.ipynb
+
+.. toctree::
+ :maxdepth: 1
+ :caption: Skater_reg: Endogenous Spatial Regimes
+
+ notebooks/skater_reg.ipynb
diff --git a/environment.yml b/environment.yml
index 09680823..4ecc2762 100644
--- a/environment.yml
+++ b/environment.yml
@@ -1,8 +1,8 @@
-name: notebooks-environment
+name: spreg
channels:
- conda-forge
dependencies:
- - python=3.10
+ - python>=3.10
- bokeh
- folium
- geojson
diff --git a/notebooks/skater_reg.ipynb b/notebooks/skater_reg.ipynb
index 4427a740..bfbcf91c 100644
--- a/notebooks/skater_reg.ipynb
+++ b/notebooks/skater_reg.ipynb
@@ -2,6 +2,7 @@
"cells": [
{
"cell_type": "markdown",
+ "id": "0a500c14",
"metadata": {},
"source": [
"# Skater Regression"
@@ -9,6 +10,7 @@
},
{
"cell_type": "markdown",
+ "id": "1847d3c6",
"metadata": {},
"source": [
"### This notebook shows the use of the Skater Regression funcion (Skater_reg), introduced by Anselin & Amaral (2021). For more information on the method, check:\n",
@@ -16,1076 +18,109 @@
]
},
{
- "cell_type": "code",
- "execution_count": 1,
+ "cell_type": "markdown",
+ "id": "e4afc8e0",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/opt/anaconda3/envs/analysis/lib/python3.9/site-packages/geopandas/_compat.py:106: UserWarning: The Shapely GEOS version (3.9.1dev-CAPI-1.14.1) is incompatible with the GEOS version PyGEOS was compiled with (3.9.1-CAPI-1.14.2). Conversions between both will be slow.\n",
- " warnings.warn(\n"
- ]
- }
- ],
"source": [
- "# Required imports\n",
- "import libpysal as ps\n",
- "import numpy as np\n",
- "import spreg\n",
- "from spreg.skater_reg import Skater_reg"
+ "In this example, in addition to the required packages, we will use geopandas to load the data and matplotlib to plot the results. Alternatively, PySAL's own IO could also be used to load the data."
]
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 1,
+ "id": "a7a0de53",
"metadata": {},
"outputs": [],
"source": [
+ "# Required imports\n",
+ "import libpysal as ps\n",
+ "import numpy as np\n",
+ "import spreg\n",
+ "from spreg.skater_reg import Skater_reg\n",
+ "\n",
"# Optional imports\n",
- "import geopandas as gpd\n",
- "import pandas as pd\n",
- "import plotly.express as px\n",
- "import plotly.graph_objects as go"
+ "import matplotlib.pyplot as plt\n",
+ "import geopandas as gpd"
]
},
{
"cell_type": "markdown",
+ "id": "c01ad58d",
"metadata": {},
"source": [
- "### To load the data, we can use pure PySAL or (Geo)Pandas\n",
- "### Data can be any discrete spatial objects such as points or polygons. Here we use Columbus for simplicity"
+ "We use Messner et al. (2000) data on homicides and selected socio-economic characteristics for continental U.S. counties to exemplify the use of Skater_reg. It can be downloaded from PySAL's examples repository."
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 2,
+ "id": "52f82039",
"metadata": {},
"outputs": [],
"source": [
- "# Pure PySAL alternative\n",
- "data = ps.io.open(ps.examples.get_path('columbus.dbf'))\n",
- "y = np.array(data.by_col('HOVAL')).reshape((-1,1))\n",
- "x = np.array([data.by_col(name) for name in ['INC','CRIME']]).T\n",
- "w = ps.weights.Queen.from_shapefile(ps.examples.get_path(\"columbus.shp\"))"
+ "# Load the example from PySAL\n",
+ "ps.examples.load_example(\"NCOVR\")\n",
+ "data = gpd.read_file(ps.examples.get_path('NAT.shp')).set_index('FIPS')\n",
+ "\n",
+ "# Set depedent and independent variables and the W matrix.\n",
+ "y = data['HR90'].to_numpy()\n",
+ "x = data[['RD90','PS90','UE90']].to_numpy()\n",
+ "w = ps.weights.Queen.from_dataframe(data, use_index=True)"
]
},
{
- "cell_type": "code",
- "execution_count": 4,
+ "cell_type": "markdown",
+ "id": "25be6fcf",
"metadata": {},
- "outputs": [],
"source": [
- "# GeoPandas approach\n",
- "data = gpd.read_file(ps.examples.get_path('columbus.shp'))\n",
- "y = data['HOVAL'].to_numpy()\n",
- "x = data[['INC','CRIME']].to_numpy()\n",
- "w = ps.weights.Queen.from_dataframe(data)"
+ "Skater_reg by default uses Euclidean distance to compute the Minimum Spanning Tree (MST). Therefore, we standardize the variables that will be used to compute the MST before calling the main Skater_reg function. Here, we use the X variables to compute the MST. Alternative specifications can be used.\n",
+ "\n",
+ "We set the number of clusters to 20 and minimum quorum to 100."
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 3,
+ "id": "ae2bd006",
"metadata": {},
"outputs": [
{
- "data": {
- "text/plain": [
- "array([0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 2, 0,\n",
- " 1, 2, 0, 0, 3, 3, 0, 0, 2, 1, 3, 2, 3, 2, 3, 0, 2, 1, 1, 2, 3, 3,\n",
- " 3, 2, 1, 3, 3], dtype=int32)"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "CPU times: user 1min 16s, sys: 31.6 s, total: 1min 48s\n",
+ "Wall time: 25.3 s\n"
+ ]
}
],
"source": [
+ "%%time\n",
"# Standardize the variables to be used to compute the minimum spanning tree (could add/remove any variable)\n",
"x_std = (x - np.mean(x,axis=0)) / np.std(x,axis=0)\n",
"\n",
"# Call the Skater_reg method based on OLS\n",
- "results = Skater_reg().fit(4, w, x_std, {'reg':spreg.OLS,'y':y,'x':x}, quorum=10)\n",
- "\n",
- "# The cluster allocations from the final step are stored in the attribute current_labels_\n",
- "results.current_labels_"
+ "results = Skater_reg().fit(20, w, x_std, {'reg':spreg.OLS,'y':y,'x':x}, quorum=100)"
]
},
{
"cell_type": "markdown",
+ "id": "53218349",
"metadata": {},
"source": [
- "### Optionally, to see the decrease in the Sum of Squared Residuals (SSR), we can use the trace from Skater_reg to plot the SSR from each step"
+ "The intermediate steps are stored in the attibute \\_trace. We can use this information to plot the decrease in the total sum of squared residuals by number of clusters. This information can be helpful to select the number of desired clusters."
]
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 4,
+ "id": "4e862e49",
"metadata": {},
"outputs": [
{
"data": {
- "text/html": [
- " \n",
- " "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "application/vnd.plotly.v1+json": {
- "config": {
- "plotlyServerURL": "https://plot.ly"
- },
- "data": [
- {
- "line": {
- "color": "black",
- "width": 2
- },
- "mode": "lines+markers",
- "type": "scatter",
- "x": [
- 2,
- 3,
- 4
- ],
- "y": [
- 9560.148546865878,
- 8776.404522267145,
- 8372.603714597415
- ]
- }
- ],
- "layout": {
- "template": {
- "data": {
- "bar": [
- {
- "error_x": {
- "color": "#2a3f5f"
- },
- "error_y": {
- "color": "#2a3f5f"
- },
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "bar"
- }
- ],
- "barpolar": [
- {
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "barpolar"
- }
- ],
- "carpet": [
- {
- "aaxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "baxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "type": "carpet"
- }
- ],
- "choropleth": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "choropleth"
- }
- ],
- "contour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "contour"
- }
- ],
- "contourcarpet": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "contourcarpet"
- }
- ],
- "heatmap": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "heatmap"
- }
- ],
- "heatmapgl": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "heatmapgl"
- }
- ],
- "histogram": [
- {
- "marker": {
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "histogram"
- }
- ],
- "histogram2d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "histogram2d"
- }
- ],
- "histogram2dcontour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "histogram2dcontour"
- }
- ],
- "mesh3d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "mesh3d"
- }
- ],
- "parcoords": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "parcoords"
- }
- ],
- "pie": [
- {
- "automargin": true,
- "type": "pie"
- }
- ],
- "scatter": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter"
- }
- ],
- "scatter3d": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter3d"
- }
- ],
- "scattercarpet": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattercarpet"
- }
- ],
- "scattergeo": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergeo"
- }
- ],
- "scattergl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergl"
- }
- ],
- "scattermapbox": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattermapbox"
- }
- ],
- "scatterpolar": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolar"
- }
- ],
- "scatterpolargl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolargl"
- }
- ],
- "scatterternary": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterternary"
- }
- ],
- "surface": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "surface"
- }
- ],
- "table": [
- {
- "cells": {
- "fill": {
- "color": "#EBF0F8"
- },
- "line": {
- "color": "white"
- }
- },
- "header": {
- "fill": {
- "color": "#C8D4E3"
- },
- "line": {
- "color": "white"
- }
- },
- "type": "table"
- }
- ]
- },
- "layout": {
- "annotationdefaults": {
- "arrowcolor": "#2a3f5f",
- "arrowhead": 0,
- "arrowwidth": 1
- },
- "autotypenumbers": "strict",
- "coloraxis": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "colorscale": {
- "diverging": [
- [
- 0,
- "#8e0152"
- ],
- [
- 0.1,
- "#c51b7d"
- ],
- [
- 0.2,
- "#de77ae"
- ],
- [
- 0.3,
- "#f1b6da"
- ],
- [
- 0.4,
- "#fde0ef"
- ],
- [
- 0.5,
- "#f7f7f7"
- ],
- [
- 0.6,
- "#e6f5d0"
- ],
- [
- 0.7,
- "#b8e186"
- ],
- [
- 0.8,
- "#7fbc41"
- ],
- [
- 0.9,
- "#4d9221"
- ],
- [
- 1,
- "#276419"
- ]
- ],
- "sequential": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "sequentialminus": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- },
- "colorway": [
- "#636efa",
- "#EF553B",
- "#00cc96",
- "#ab63fa",
- "#FFA15A",
- "#19d3f3",
- "#FF6692",
- "#B6E880",
- "#FF97FF",
- "#FECB52"
- ],
- "font": {
- "color": "#2a3f5f"
- },
- "geo": {
- "bgcolor": "white",
- "lakecolor": "white",
- "landcolor": "#E5ECF6",
- "showlakes": true,
- "showland": true,
- "subunitcolor": "white"
- },
- "hoverlabel": {
- "align": "left"
- },
- "hovermode": "closest",
- "mapbox": {
- "style": "light"
- },
- "paper_bgcolor": "white",
- "plot_bgcolor": "#E5ECF6",
- "polar": {
- "angularaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "radialaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "scene": {
- "xaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "yaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "zaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- }
- },
- "shapedefaults": {
- "line": {
- "color": "#2a3f5f"
- }
- },
- "ternary": {
- "aaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "baxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "caxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "title": {
- "x": 0.05
- },
- "xaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- },
- "yaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- }
- }
- },
- "xaxis": {
- "title": {
- "text": "Number of clusters"
- }
- },
- "yaxis": {
- "title": {
- "text": "Total sum of squared residuals"
- }
- }
- }
- },
- "text/html": [
- "
"
+ "image/png": "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yEgMGzasQDHxPpMmTcL8+fPxxx9/ICkpCVOnTsW5c+cwfvx4hY+hr6+PKVOmYPLkyfj9999x/fp1JCQkYN26dYW2b9OmDSpXrozvvvsO//33H7Zs2YINGzaI21+9eoVx48YhNjYWt2/fxtGjR3Hq1CmxkLOxsUFmZiYOHjyIR48e4eXLl2jYsCEGDhyIr7/+Gjt27MDNmzdx6tQpzJ8/H3///XeRsd+8eRPTpk3D8ePHcfv2bURGRuLq1atKFY1EFQ2LJiL6YHPmzClwOalx48ZYtWoVVq5ciebNm+PkyZNF3ln2IYKCgjB//nw0b94ccXFx2L17N0xNTQEAlpaWOHr0KGQyGdzc3NC0aVOMHz8eRkZGcuOnFOHn54fAwEAEBgbCzs4OERER2LNnDxo0aKDUcaZPn47AwED8+OOPaNy4Mfr161dgnFY+ExMThIWF4e+//4adnR22bt0qN5WBVCrF48eP8fXXX6Nhw4bw8vJC165dMWvWLABAu3btMHr0aPTr1w81atTAggULALy5zPb1118jMDAQtra26NWrF06cOAFra+si465cuTL+/fdffPXVV2jYsCFGjhyJcePGYdSoUUrlT1SRSIR3/8cjIiIiogLY00RERESkABZNRERERApg0URERESkABZNRERERApg0URERESkABZNRERERApg0URERESkABZNRERERApg0URERESkABZNRERERApg0URERESkgP8HeW7RDjXuVoYAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
]
},
"metadata": {},
@@ -1094,41897 +129,44 @@
],
"source": [
"trace = [results._trace[i][1][2] for i in range(1,len(results._trace))]\n",
- "fig = go.Figure(data=go.Scatter(x=list(range(2,len(trace)+2)), y=trace,mode='lines+markers',\n",
- " line=dict(color='black', width=2)))\n",
- "fig.update_layout(xaxis_title='Number of clusters',\n",
- " yaxis_title='Total sum of squared residuals')\n",
- "fig.show()"
+ "fig, ax = plt.subplots()\n",
+ "ax.plot(list(range(2,len(trace)+2)), trace, '-o', color='black', linewidth=2)\n",
+ "\n",
+ "ax.set(xlabel='Number of clusters', ylabel='Total sum of squared residuals')\n",
+ "ax.grid()\n",
+ "\n",
+ "plt.show()"
]
},
{
"cell_type": "markdown",
+ "id": "a3c6cf08",
"metadata": {},
"source": [
- "### We can also plot the cluster allocations from the final step using the attribute current_labels_"
+ "Let's say we choose 12 clusters. We can plot the results using geopandas and matplotlib."
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 5,
+ "id": "ff616fb3",
"metadata": {},
"outputs": [
{
"data": {
- "application/vnd.plotly.v1+json": {
- "config": {
- "plotlyServerURL": "https://plot.ly"
- },
- "data": [
- {
- "colorscale": [
- [
- 0.0,
- "#636efa"
- ],
- [
- 1.0,
- "#636efa"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=0
locations=%{location}",
- "locations": [
- 0,
- 1,
- 2,
- 3,
- 4,
- 6,
- 7,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 21,
- 24,
- 25,
- 28,
- 29,
- 37
- ],
- "name": "0",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- },
- {
- "colorscale": [
- [
- 0.0,
- "#EF553B"
- ],
- [
- 1.0,
- "#EF553B"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=1
locations=%{location}",
- "locations": [
- 5,
- 8,
- 9,
- 16,
- 19,
- 22,
- 31,
- 39,
- 40,
- 46
- ],
- "name": "1",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- },
- {
- "colorscale": [
- [
- 0.0,
- "#00cc96"
- ],
- [
- 1.0,
- "#00cc96"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=2
locations=%{location}",
- "locations": [
- 17,
- 18,
- 20,
- 23,
- 30,
- 33,
- 35,
- 38,
- 41,
- 45
- ],
- "name": "2",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- },
- {
- "colorscale": [
- [
- 0.0,
- "#ab63fa"
- ],
- [
- 1.0,
- "#ab63fa"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=3
locations=%{location}",
- "locations": [
- 26,
- 27,
- 32,
- 34,
- 36,
- 42,
- 43,
- 44,
- 47,
- 48
- ],
- "name": "3",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- }
- ],
- "layout": {
- "geo": {
- "center": {},
- "domain": {
- "x": [
- 0.0,
- 1.0
- ],
- "y": [
- 0.0,
- 1.0
- ]
- },
- "fitbounds": "locations",
- "visible": false
- },
- "legend": {
- "title": {
- "text": "cluster"
- },
- "tracegroupgap": 0
- },
- "margin": {
- "t": 60
- },
- "template": {
- "data": {
- "bar": [
- {
- "error_x": {
- "color": "#2a3f5f"
- },
- "error_y": {
- "color": "#2a3f5f"
- },
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "bar"
- }
- ],
- "barpolar": [
- {
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "barpolar"
- }
- ],
- "carpet": [
- {
- "aaxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "baxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "type": "carpet"
- }
- ],
- "choropleth": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "choropleth"
- }
- ],
- "contour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "contour"
- }
- ],
- "contourcarpet": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "contourcarpet"
- }
- ],
- "heatmap": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "heatmap"
- }
- ],
- "heatmapgl": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "heatmapgl"
- }
- ],
- "histogram": [
- {
- "marker": {
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "histogram"
- }
- ],
- "histogram2d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "histogram2d"
- }
- ],
- "histogram2dcontour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "histogram2dcontour"
- }
- ],
- "mesh3d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "mesh3d"
- }
- ],
- "parcoords": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "parcoords"
- }
- ],
- "pie": [
- {
- "automargin": true,
- "type": "pie"
- }
- ],
- "scatter": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter"
- }
- ],
- "scatter3d": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter3d"
- }
- ],
- "scattercarpet": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattercarpet"
- }
- ],
- "scattergeo": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergeo"
- }
- ],
- "scattergl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergl"
- }
- ],
- "scattermapbox": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattermapbox"
- }
- ],
- "scatterpolar": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolar"
- }
- ],
- "scatterpolargl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolargl"
- }
- ],
- "scatterternary": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterternary"
- }
- ],
- "surface": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "surface"
- }
- ],
- "table": [
- {
- "cells": {
- "fill": {
- "color": "#EBF0F8"
- },
- "line": {
- "color": "white"
- }
- },
- "header": {
- "fill": {
- "color": "#C8D4E3"
- },
- "line": {
- "color": "white"
- }
- },
- "type": "table"
- }
- ]
- },
- "layout": {
- "annotationdefaults": {
- "arrowcolor": "#2a3f5f",
- "arrowhead": 0,
- "arrowwidth": 1
- },
- "autotypenumbers": "strict",
- "coloraxis": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "colorscale": {
- "diverging": [
- [
- 0,
- "#8e0152"
- ],
- [
- 0.1,
- "#c51b7d"
- ],
- [
- 0.2,
- "#de77ae"
- ],
- [
- 0.3,
- "#f1b6da"
- ],
- [
- 0.4,
- "#fde0ef"
- ],
- [
- 0.5,
- "#f7f7f7"
- ],
- [
- 0.6,
- "#e6f5d0"
- ],
- [
- 0.7,
- "#b8e186"
- ],
- [
- 0.8,
- "#7fbc41"
- ],
- [
- 0.9,
- "#4d9221"
- ],
- [
- 1,
- "#276419"
- ]
- ],
- "sequential": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "sequentialminus": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- },
- "colorway": [
- "#636efa",
- "#EF553B",
- "#00cc96",
- "#ab63fa",
- "#FFA15A",
- "#19d3f3",
- "#FF6692",
- "#B6E880",
- "#FF97FF",
- "#FECB52"
- ],
- "font": {
- "color": "#2a3f5f"
- },
- "geo": {
- "bgcolor": "white",
- "lakecolor": "white",
- "landcolor": "#E5ECF6",
- "showlakes": true,
- "showland": true,
- "subunitcolor": "white"
- },
- "hoverlabel": {
- "align": "left"
- },
- "hovermode": "closest",
- "mapbox": {
- "style": "light"
- },
- "paper_bgcolor": "white",
- "plot_bgcolor": "#E5ECF6",
- "polar": {
- "angularaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "radialaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "scene": {
- "xaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "yaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "zaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- }
- },
- "shapedefaults": {
- "line": {
- "color": "#2a3f5f"
- }
- },
- "ternary": {
- "aaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "baxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "caxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "title": {
- "x": 0.05
- },
- "xaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- },
- "yaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- }
- }
- }
- }
- },
- "text/html": [
- ""
+ "text/plain": [
+ "(-127.6195011138916, -64.0817699432373, 23.735178565979005, 50.59252300262451)"
]
},
+ "execution_count": 5,
"metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig = px.choropleth(pd.concat([data,pd.Series(results.current_labels_.astype(str), name='cluster', index=data.index)], axis=1),\n",
- " geojson=data.geometry,\n",
- " locations=data.index,\n",
- " color=\"cluster\")\n",
- "fig.update_geos(fitbounds=\"locations\", visible=False)\n",
- "fig.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### The trace can also be used to recall the cluster allocations from any intermediate step"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {},
- "outputs": [
+ "output_type": "execute_result"
+ },
{
"data": {
- "application/vnd.plotly.v1+json": {
- "config": {
- "plotlyServerURL": "https://plot.ly"
- },
- "data": [
- {
- "colorscale": [
- [
- 0.0,
- "#636efa"
- ],
- [
- 1.0,
- "#636efa"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=0
locations=%{location}",
- "locations": [
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 19,
- 21,
- 22,
- 24,
- 25,
- 28,
- 29,
- 31,
- 37,
- 39,
- 40,
- 46
- ],
- "name": "0",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- },
- {
- "colorscale": [
- [
- 0.0,
- "#EF553B"
- ],
- [
- 1.0,
- "#EF553B"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=1
locations=%{location}",
- "locations": [
- 17,
- 18,
- 20,
- 23,
- 30,
- 33,
- 35,
- 38,
- 41,
- 45
- ],
- "name": "1",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- },
- {
- "colorscale": [
- [
- 0.0,
- "#00cc96"
- ],
- [
- 1.0,
- "#00cc96"
- ]
- ],
- "geo": "geo",
- "geojson": {
- "bbox": [
- 5.87490701675415,
- 10.788629531860352,
- 11.287420272827148,
- 14.742449760437012
- ],
- "features": [
- {
- "bbox": [
- 8.559700012207031,
- 13.995059967041016,
- 9.09996509552002,
- 14.742449760437012
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.559700012207031,
- 14.742449760437012
- ],
- [
- 8.809452056884766,
- 14.734430313110352
- ],
- [
- 8.808412551879883,
- 14.636520385742188
- ],
- [
- 8.919304847717285,
- 14.638500213623047
- ],
- [
- 9.087138175964355,
- 14.63049030303955
- ],
- [
- 9.09996509552002,
- 14.244830131530762
- ],
- [
- 9.015047073364258,
- 14.241840362548828
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "0",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.950088977813721,
- 13.72739028930664,
- 8.666550636291504,
- 14.263930320739746
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.252790451049805,
- 14.236940383911133
- ],
- [
- 8.282757759094238,
- 14.229940414428711
- ],
- [
- 8.330711364746094,
- 14.229940414428711
- ],
- [
- 8.383658409118652,
- 14.228930473327637
- ],
- [
- 8.444600105285645,
- 14.228919982910156
- ],
- [
- 8.544504165649414,
- 14.23490047454834
- ],
- [
- 8.624129295349121,
- 14.236980438232422
- ],
- [
- 8.625825881958008,
- 14.22367000579834
- ],
- [
- 8.63259220123291,
- 14.1705904006958
- ],
- [
- 8.642902374267578,
- 14.089710235595703
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.22661304473877,
- 13.744379997253418
- ],
- [
- 8.215643882751465,
- 13.794329643249512
- ],
- [
- 8.198686599731445,
- 13.858280181884766
- ],
- [
- 8.16972541809082,
- 13.883259773254395
- ],
- [
- 8.12777042388916,
- 13.89225959777832
- ],
- [
- 8.093802452087402,
- 13.891260147094727
- ],
- [
- 8.063838005065918,
- 13.90526008605957
- ],
- [
- 8.044872283935547,
- 13.943220138549805
- ],
- [
- 8.037888526916504,
- 13.96720027923584
- ],
- [
- 7.999115943908691,
- 14.02457046508789
- ],
- [
- 7.99936580657959,
- 14.0349702835083
- ],
- [
- 8.003013610839844,
- 14.187020301818848
- ],
- [
- 7.950088977813721,
- 14.243969917297363
- ],
- [
- 8.111939430236816,
- 14.263930320739746
- ],
- [
- 8.147891998291016,
- 14.232959747314453
- ],
- [
- 8.181855201721191,
- 14.225959777832031
- ],
- [
- 8.20982837677002,
- 14.226949691772461
- ],
- [
- 8.252790451049805,
- 14.236940383911133
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "1",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.653305053710938,
- 13.544429779052734,
- 9.351485252380371,
- 14.008090019226074
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.653305053710938,
- 14.008090019226074
- ],
- [
- 8.818140029907227,
- 14.002050399780273
- ],
- [
- 9.008951187133789,
- 13.995059967041016
- ],
- [
- 9.008928298950195,
- 13.9381103515625
- ],
- [
- 9.34359073638916,
- 13.913080215454102
- ],
- [
- 9.351485252380371,
- 13.67529010772705
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.662188529968262,
- 13.909899711608887
- ],
- [
- 8.653305053710938,
- 14.008090019226074
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "2",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.19859504699707,
- 13.586509704589844,
- 8.685274124145508,
- 13.861700057983398
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.45949935913086,
- 13.82034969329834
- ],
- [
- 8.473407745361328,
- 13.832269668579102
- ],
- [
- 8.502935409545898,
- 13.838729858398438
- ],
- [
- 8.516386985778809,
- 13.841679573059082
- ],
- [
- 8.540358543395996,
- 13.842399597167969
- ],
- [
- 8.562577247619629,
- 13.84253978729248
- ],
- [
- 8.579310417175293,
- 13.8412504196167
- ],
- [
- 8.605281829833984,
- 13.839249610900879
- ],
- [
- 8.666550636291504,
- 13.861700057983398
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.201583862304688,
- 13.614489555358887
- ],
- [
- 8.19859504699707,
- 13.635479927062988
- ],
- [
- 8.233589172363281,
- 13.703410148620605
- ],
- [
- 8.229602813720703,
- 13.72739028930664
- ],
- [
- 8.291547775268555,
- 13.74137020111084
- ],
- [
- 8.284571647644043,
- 13.784330368041992
- ],
- [
- 8.323546409606934,
- 13.786080360412598
- ],
- [
- 8.37348747253418,
- 13.78831958770752
- ],
- [
- 8.387155532836914,
- 13.788969993591309
- ],
- [
- 8.415447235107422,
- 13.79030990600586
- ],
- [
- 8.431432723999023,
- 13.793310165405273
- ],
- [
- 8.45949935913086,
- 13.82034969329834
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "3",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.677577018737793,
- 12.861089706420898,
- 9.401384353637695,
- 13.722209930419922
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.677577018737793,
- 13.722209930419922
- ],
- [
- 8.909939765930176,
- 13.715530395507812
- ],
- [
- 9.161684036254883,
- 13.708290100097656
- ],
- [
- 9.166626930236816,
- 13.581399917602539
- ],
- [
- 9.190605163574219,
- 13.586389541625977
- ],
- [
- 9.196581840515137,
- 13.544429779052734
- ],
- [
- 9.24254322052002,
- 13.558409690856934
- ],
- [
- 9.244555473327637,
- 13.59138011932373
- ],
- [
- 9.273821830749512,
- 13.588560104370117
- ],
- [
- 9.298501014709473,
- 13.589380264282227
- ],
- [
- 9.310471534729004,
- 13.54541015625
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "4",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.333296775817871,
- 13.272419929504395,
- 10.1806001663208,
- 13.698240280151367
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.401384353637695,
- 13.550399780273438
- ],
- [
- 9.43441104888916,
- 13.694270133972168
- ],
- [
- 9.605246543884277,
- 13.698240280151367
- ],
- [
- 9.651198387145996,
- 13.692239761352539
- ],
- [
- 9.687166213989258,
- 13.697230339050293
- ],
- [
- 9.686145782470703,
- 13.645279884338379
- ],
- [
- 9.845992088317871,
- 13.652250289916992
- ],
- [
- 10.050789833068848,
- 13.650230407714844
- ],
- [
- 10.103719711303711,
- 13.603260040283203
- ],
- [
- 10.175629615783691,
- 13.565290451049805
- ],
- [
- 10.1806001663208,
- 13.482359886169434
- ],
- [
- 10.16759967803955,
- 13.471369743347168
- ],
- [
- 10.153610229492188,
- 13.454389572143555
- ],
- [
- 10.1356201171875,
- 13.439399719238281
- ],
- [
- 10.119629859924316,
- 13.429409980773926
- ],
- [
- 10.121600151062012,
- 13.344490051269531
- ],
- [
- 10.096619606018066,
- 13.342490196228027
- ],
- [
- 10.085630416870117,
- 13.333499908447266
- ],
- [
- 10.05265998840332,
- 13.33650016784668
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.401384353637695,
- 13.550399780273438
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "5",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.801973819732666,
- 12.942020416259766,
- 8.456572532653809,
- 13.644510269165039
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.037740707397461,
- 13.60752010345459
- ],
- [
- 8.062715530395508,
- 13.604519844055176
- ],
- [
- 8.072694778442383,
- 13.58053970336914
- ],
- [
- 8.115653038024902,
- 13.579540252685547
- ],
- [
- 8.130637168884277,
- 13.576539993286133
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.052460670471191,
- 12.963089942932129
- ],
- [
- 8.052496910095215,
- 13.052009582519531
- ],
- [
- 8.048531532287598,
- 13.129940032958984
- ],
- [
- 8.032543182373047,
- 13.117950439453125
- ],
- [
- 8.01356029510498,
- 13.114959716796875
- ],
- [
- 7.989583969116211,
- 13.115960121154785
- ],
- [
- 7.962619781494141,
- 13.137940406799316
- ],
- [
- 7.923679828643799,
- 13.191900253295898
- ],
- [
- 7.898725986480713,
- 13.243860244750977
- ],
- [
- 7.88774299621582,
- 13.25784969329834
- ],
- [
- 7.871758937835693,
- 13.25885009765625
- ],
- [
- 7.868794918060303,
- 13.338780403137207
- ],
- [
- 7.866809844970703,
- 13.371749877929688
- ],
- [
- 7.851837158203125,
- 13.40073013305664
- ],
- [
- 7.844857215881348,
- 13.432700157165527
- ],
- [
- 7.8408918380737305,
- 13.50862979888916
- ],
- [
- 7.824925899505615,
- 13.552599906921387
- ],
- [
- 7.803965091705322,
- 13.596559524536133
- ],
- [
- 7.801973819732666,
- 13.61553955078125
- ],
- [
- 7.90187406539917,
- 13.608539581298828
- ],
- [
- 7.90288782119751,
- 13.644510269165039
- ],
- [
- 7.9967942237854,
- 13.63949966430664
- ],
- [
- 7.998781204223633,
- 13.614520072937012
- ],
- [
- 8.037740707397461,
- 13.60752010345459
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "6",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.10498046875,
- 13.104069709777832,
- 8.733969688415527,
- 13.644430160522461
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.247527122497559,
- 13.586509704589844
- ],
- [
- 8.279500007629395,
- 13.596500396728516
- ],
- [
- 8.294443130493164,
- 13.604570388793945
- ],
- [
- 8.316472053527832,
- 13.616479873657227
- ],
- [
- 8.385412216186523,
- 13.63444995880127
- ],
- [
- 8.380410194396973,
- 13.616470336914062
- ],
- [
- 8.439335823059082,
- 13.605520248413086
- ],
- [
- 8.450570106506348,
- 13.60453987121582
- ],
- [
- 8.459343910217285,
- 13.644430160522461
- ],
- [
- 8.505298614501953,
- 13.644430160522461
- ],
- [
- 8.537267684936523,
- 13.644430160522461
- ],
- [
- 8.547515869140625,
- 13.643819808959961
- ],
- [
- 8.571109771728516,
- 13.64126968383789
- ],
- [
- 8.588301658630371,
- 13.641819953918457
- ],
- [
- 8.628178596496582,
- 13.639459609985352
- ],
- [
- 8.685274124145508,
- 13.639519691467285
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.380322456359863,
- 13.40466022491455
- ],
- [
- 8.293397903442383,
- 13.408490180969238
- ],
- [
- 8.181536674499512,
- 13.415909767150879
- ],
- [
- 8.10498046875,
- 13.420989990234375
- ],
- [
- 8.109848022460938,
- 13.432640075683594
- ],
- [
- 8.121718406677246,
- 13.461039543151855
- ],
- [
- 8.128536224365234,
- 13.470100402832031
- ],
- [
- 8.14012622833252,
- 13.479769706726074
- ],
- [
- 8.164705276489258,
- 13.511059761047363
- ],
- [
- 8.179450035095215,
- 13.529829978942871
- ],
- [
- 8.189590454101562,
- 13.545760154724121
- ],
- [
- 8.1974515914917,
- 13.575770378112793
- ],
- [
- 8.201574325561523,
- 13.591509819030762
- ],
- [
- 8.247527122497559,
- 13.586509704589844
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "7",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.595190048217773,
- 10.095430374145508,
- 13.298540115356445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.333296775817871,
- 13.272419929504395
- ],
- [
- 9.67100715637207,
- 13.27361011505127
- ],
- [
- 9.677009582519531,
- 13.296589851379395
- ],
- [
- 9.772106170654297,
- 13.292110443115234
- ],
- [
- 10.027669906616211,
- 13.298540115356445
- ],
- [
- 9.950613975524902,
- 12.983830451965332
- ],
- [
- 10.004560470581055,
- 12.976829528808594
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.23626708984375,
- 12.876279830932617
- ],
- [
- 9.333296775817871,
- 13.272419929504395
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "8",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.015439987182617,
- 12.72404956817627,
- 10.649680137634277,
- 13.272509574890137
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.082509994506836,
- 13.033769607543945
- ],
- [
- 10.092499732971191,
- 13.052749633789062
- ],
- [
- 10.126489639282227,
- 13.090709686279297
- ],
- [
- 10.182459831237793,
- 13.157649993896484
- ],
- [
- 10.267419815063477,
- 13.254549980163574
- ],
- [
- 10.289389610290527,
- 13.247550010681152
- ],
- [
- 10.316360473632812,
- 13.244549751281738
- ],
- [
- 10.33234977722168,
- 13.23954963684082
- ],
- [
- 10.368260383605957,
- 13.246430397033691
- ],
- [
- 10.39428997039795,
- 13.246540069580078
- ],
- [
- 10.417269706726074,
- 13.247540473937988
- ],
- [
- 10.450240135192871,
- 13.251529693603516
- ],
- [
- 10.4752197265625,
- 13.261520385742188
- ],
- [
- 10.4752197265625,
- 13.272509574890137
- ],
- [
- 10.534159660339355,
- 13.271499633789062
- ],
- [
- 10.566129684448242,
- 13.271499633789062
- ],
- [
- 10.603090286254883,
- 13.26550006866455
- ],
- [
- 10.632060050964355,
- 13.263489723205566
- ],
- [
- 10.639049530029297,
- 13.24450969696045
- ],
- [
- 10.640040397644043,
- 13.21953010559082
- ],
- [
- 10.649020195007324,
- 13.199549674987793
- ],
- [
- 10.646010398864746,
- 13.176569938659668
- ],
- [
- 10.64700984954834,
- 13.15758991241455
- ],
- [
- 10.645999908447266,
- 13.144599914550781
- ],
- [
- 10.637999534606934,
- 13.129610061645508
- ],
- [
- 10.63899040222168,
- 13.104630470275879
- ],
- [
- 10.631979942321777,
- 13.070659637451172
- ],
- [
- 10.62697982788086,
- 13.051679611206055
- ],
- [
- 10.627969741821289,
- 13.026700019836426
- ],
- [
- 10.631959915161133,
- 13.008720397949219
- ],
- [
- 10.633950233459473,
- 12.983739852905273
- ],
- [
- 10.62893009185791,
- 12.945779800415039
- ],
- [
- 10.639909744262695,
- 12.918800354003906
- ],
- [
- 10.637900352478027,
- 12.890819549560547
- ],
- [
- 10.645890235900879,
- 12.865839958190918
- ],
- [
- 10.647870063781738,
- 12.842860221862793
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.095430374145508,
- 12.876899719238281
- ],
- [
- 10.093509674072266,
- 12.900219917297363
- ],
- [
- 10.091629981994629,
- 12.923040390014648
- ],
- [
- 10.089170455932617,
- 12.952810287475586
- ],
- [
- 10.086819648742676,
- 12.981430053710938
- ],
- [
- 10.083649635314941,
- 13.019869804382324
- ],
- [
- 10.082509994506836,
- 13.033769607543945
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "9",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.572946548461914,
- 12.810150146484375,
- 8.757728576660156,
- 13.116339683532715
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.596989631652832,
- 13.111889839172363
- ],
- [
- 8.651877403259277,
- 13.113670349121094
- ],
- [
- 8.733969688415527,
- 13.116339683532715
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "10",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.456572532653809,
- 12.809200286865234,
- 8.632829666137695,
- 13.106889724731445
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.517032623291016,
- 13.105389595031738
- ],
- [
- 8.585997581481934,
- 13.106889724731445
- ],
- [
- 8.572946548461914,
- 12.950030326843262
- ],
- [
- 8.629888534545898,
- 12.945030212402344
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "11",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.145203590393066,
- 12.930660247802734,
- 8.487373352050781,
- 13.104069709777832
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.154367446899414,
- 12.978059768676758
- ],
- [
- 8.22030258178711,
- 12.979049682617188
- ],
- [
- 8.232307434082031,
- 13.020009994506836
- ],
- [
- 8.28026294708252,
- 13.026000022888184
- ],
- [
- 8.2882719039917,
- 13.063969612121582
- ],
- [
- 8.351269721984863,
- 13.066499710083008
- ],
- [
- 8.412152290344238,
- 13.068949699401855
- ],
- [
- 8.425149917602539,
- 13.09391975402832
- ],
- [
- 8.456572532653809,
- 13.104069709777832
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "12",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.062442779541016,
- 12.787229537963867,
- 8.512937545776367,
- 12.944100379943848
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.062442779541016,
- 12.944100379943848
- ],
- [
- 8.104400634765625,
- 12.943050384521484
- ],
- [
- 8.145203590393066,
- 12.942020416259766
- ],
- [
- 8.245318412780762,
- 12.938819885253906
- ],
- [
- 8.337125778198242,
- 12.935720443725586
- ],
- [
- 8.402054786682129,
- 12.9335298538208
- ],
- [
- 8.456042289733887,
- 12.931710243225098
- ],
- [
- 8.487373352050781,
- 12.930660247802734
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.062442779541016,
- 12.944100379943848
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "13",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.757728576660156,
- 12.532369613647461,
- 9.233386993408203,
- 12.86400032043457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.943572998046875,
- 12.86221981048584
- ],
- [
- 9.233386993408203,
- 12.86400032043457
- ],
- [
- 9.220885276794434,
- 12.805720329284668
- ],
- [
- 9.213532447814941,
- 12.778030395507812
- ],
- [
- 9.206208229064941,
- 12.75883960723877
- ],
- [
- 9.187246322631836,
- 12.7091703414917
- ],
- [
- 9.166311264038086,
- 12.679980278015137
- ],
- [
- 9.146787643432617,
- 12.658740043640137
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "14",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.50916576385498,
- 12.361550331115723,
- 8.785566329956055,
- 12.861089706420898
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.632829666137695,
- 12.810150146484375
- ],
- [
- 8.693771362304688,
- 12.811140060424805
- ],
- [
- 8.700782775878906,
- 12.857099533081055
- ],
- [
- 8.757728576660156,
- 12.861089706420898
- ],
- [
- 8.777865409851074,
- 12.628029823303223
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.50916576385498,
- 12.809200286865234
- ],
- [
- 8.582889556884766,
- 12.809769630432129
- ],
- [
- 8.632829666137695,
- 12.810150146484375
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "15",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.356060028076172,
- 12.44025993347168,
- 10.709790229797363,
- 12.838859558105469
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.501099586486816,
- 12.805319786071777
- ],
- [
- 10.649680137634277,
- 12.830180168151855
- ],
- [
- 10.70281982421875,
- 12.838859558105469
- ],
- [
- 10.709790229797363,
- 12.774909973144531
- ],
- [
- 10.664819717407227,
- 12.762929916381836
- ],
- [
- 10.6697998046875,
- 12.703980445861816
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "16",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.358473777770996,
- 12.355310440063477,
- 8.58968734741211,
- 12.788189888000488
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.478970527648926,
- 12.788189888000488
- ],
- [
- 8.512937545776367,
- 12.788180351257324
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "17",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.122319221496582,
- 12.445659637451172,
- 8.431012153625488,
- 12.788060188293457
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.122319221496582,
- 12.787229537963867
- ],
- [
- 8.259181022644043,
- 12.787599563598633
- ],
- [
- 8.431012153625488,
- 12.788060188293457
- ],
- [
- 8.423884391784668,
- 12.448490142822266
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.13826847076416,
- 12.703310012817383
- ],
- [
- 8.138282775878906,
- 12.737279891967773
- ],
- [
- 8.122319221496582,
- 12.787229537963867
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "18",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.841083526611328,
- 11.741860389709473,
- 10.425640106201172,
- 12.781140327453613
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 10.178409576416016,
- 12.751319885253906
- ],
- [
- 10.356599807739258,
- 12.781140327453613
- ],
- [
- 10.356389999389648,
- 12.712010383605957
- ],
- [
- 10.356060028076172,
- 12.598119735717773
- ],
- [
- 10.420989990234375,
- 12.578129768371582
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "19",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 7.0613298416137695,
- 11.527389526367188,
- 8.563572883605957,
- 12.725419998168945
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.842434883117676,
- 12.405599594116211
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.37365436553955,
- 11.774089813232422
- ],
- [
- 8.282732009887695,
- 11.74413013458252
- ],
- [
- 8.256792068481445,
- 11.828060150146484
- ],
- [
- 8.103923797607422,
- 11.785120010375977
- ],
- [
- 8.120859146118164,
- 11.670220375061035
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.717282772064209,
- 11.741209983825684
- ],
- [
- 7.580474853515625,
- 11.882100105285645
- ],
- [
- 7.637434005737305,
- 11.917059898376465
- ],
- [
- 7.616511821746826,
- 12.057939529418945
- ],
- [
- 7.40372896194458,
- 12.080949783325195
- ],
- [
- 7.404763221740723,
- 12.164870262145996
- ],
- [
- 7.323862075805664,
- 12.21183967590332
- ],
- [
- 7.19602108001709,
- 12.295780181884766
- ],
- [
- 7.135107040405273,
- 12.359729766845703
- ],
- [
- 7.108152866363525,
- 12.406700134277344
- ],
- [
- 7.092213153839111,
- 12.51261043548584
- ],
- [
- 7.0613298416137695,
- 12.725419998168945
- ],
- [
- 7.143249988555908,
- 12.724410057067871
- ],
- [
- 7.155218124389648,
- 12.674460411071777
- ],
- [
- 7.173169136047363,
- 12.598520278930664
- ],
- [
- 7.206113815307617,
- 12.544560432434082
- ],
- [
- 7.27003812789917,
- 12.510580062866211
- ],
- [
- 7.341958045959473,
- 12.486599922180176
- ],
- [
- 7.429862976074219,
- 12.46660041809082
- ],
- [
- 7.459833145141602,
- 12.463600158691406
- ],
- [
- 7.481781005859375,
- 12.389659881591797
- ],
- [
- 7.498770236968994,
- 12.403650283813477
- ],
- [
- 7.516755104064941,
- 12.409640312194824
- ],
- [
- 7.548725128173828,
- 12.412630081176758
- ],
- [
- 7.5597147941589355,
- 12.414629936218262
- ],
- [
- 7.55869197845459,
- 12.356679916381836
- ],
- [
- 7.569672107696533,
- 12.334699630737305
- ],
- [
- 7.616611003875732,
- 12.29872989654541
- ],
- [
- 7.6695709228515625,
- 12.327690124511719
- ],
- [
- 7.721512794494629,
- 12.307709693908691
- ],
- [
- 7.708548069000244,
- 12.36266040802002
- ],
- [
- 7.639626979827881,
- 12.389639854431152
- ],
- [
- 7.646636009216309,
- 12.430609703063965
- ],
- [
- 7.842434883117676,
- 12.405599594116211
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "20",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.357977867126465,
- 12.22655963897705,
- 10.015439987182617,
- 12.72404956817627
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.471497535705566,
- 12.595709800720215
- ],
- [
- 9.555828094482422,
- 12.595190048217773
- ],
- [
- 9.723674774169922,
- 12.595199584960938
- ],
- [
- 9.763668060302734,
- 12.67313003540039
- ],
- [
- 10.015439987182617,
- 12.72404956817627
- ],
- [
- 9.93346881866455,
- 12.599410057067871
- ],
- [
- 9.941193580627441,
- 12.512129783630371
- ],
- [
- 9.935688018798828,
- 12.501870155334473
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "21",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.42175006866455,
- 11.990639686584473,
- 10.888489723205566,
- 12.652009963989258
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.667770385742188,
- 12.648030281066895
- ],
- [
- 10.776670455932617,
- 12.652009963989258
- ],
- [
- 10.88755989074707,
- 12.644009590148926
- ],
- [
- 10.888489723205566,
- 12.49213981628418
- ],
- [
- 10.884440422058105,
- 12.34926986694336
- ],
- [
- 10.884380340576172,
- 12.19340991973877
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.42175006866455,
- 12.44025993347168
- ],
- [
- 10.669699668884277,
- 12.483180046081543
- ],
- [
- 10.667340278625488,
- 12.580109596252441
- ],
- [
- 10.666970252990723,
- 12.595029830932617
- ],
- [
- 10.667770385742188,
- 12.648030281066895
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "22",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.131139755249023,
- 12.088789939880371,
- 8.790392875671387,
- 12.645350456237793
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.148235321044922,
- 12.645350456237793
- ],
- [
- 8.223162651062012,
- 12.645339965820312
- ],
- [
- 8.296090126037598,
- 12.645339965820312
- ],
- [
- 8.299444198608398,
- 12.609780311584473
- ],
- [
- 8.301017761230469,
- 12.593090057373047
- ],
- [
- 8.30504322052002,
- 12.550419807434082
- ],
- [
- 8.33201789855957,
- 12.547419548034668
- ],
- [
- 8.3489990234375,
- 12.547419548034668
- ],
- [
- 8.347976684570312,
- 12.493459701538086
- ],
- [
- 8.350508689880371,
- 12.481929779052734
- ],
- [
- 8.358473777770996,
- 12.445659637451172
- ],
- [
- 8.369997024536133,
- 12.428179740905762
- ],
- [
- 8.391569137573242,
- 12.407380104064941
- ],
- [
- 8.406447410583496,
- 12.396730422973633
- ],
- [
- 8.438838958740234,
- 12.373559951782227
- ],
- [
- 8.4813814163208,
- 12.362910270690918
- ],
- [
- 8.502638816833496,
- 12.357080459594727
- ],
- [
- 8.523073196411133,
- 12.355310440063477
- ],
- [
- 8.554715156555176,
- 12.355330467224121
- ],
- [
- 8.565507888793945,
- 12.355330467224121
- ],
- [
- 8.58968734741211,
- 12.361550331115723
- ],
- [
- 8.605761528015137,
- 12.367939949035645
- ],
- [
- 8.657632827758789,
- 12.391510009765625
- ],
- [
- 8.69460678100586,
- 12.417490005493164
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.519205093383789,
- 12.115229606628418
- ],
- [
- 8.505514144897461,
- 12.128210067749023
- ],
- [
- 8.495033264160156,
- 12.13776969909668
- ],
- [
- 8.471713066101074,
- 12.145750045776367
- ],
- [
- 8.43419361114502,
- 12.139209747314453
- ],
- [
- 8.408769607543945,
- 12.134770393371582
- ],
- [
- 8.358863830566406,
- 12.145950317382812
- ],
- [
- 8.32612133026123,
- 12.153280258178711
- ],
- [
- 8.310224533081055,
- 12.156929969787598
- ],
- [
- 8.25028133392334,
- 12.194430351257324
- ],
- [
- 8.225326538085938,
- 12.206859588623047
- ],
- [
- 8.190520286560059,
- 12.237640380859375
- ],
- [
- 8.174397468566895,
- 12.2504301071167
- ],
- [
- 8.157790184020996,
- 12.281220436096191
- ],
- [
- 8.14834976196289,
- 12.298720359802246
- ],
- [
- 8.141800880432129,
- 12.326470375061035
- ],
- [
- 8.136807441711426,
- 12.348549842834473
- ],
- [
- 8.131139755249023,
- 12.373600006103516
- ],
- [
- 8.137151718139648,
- 12.416560173034668
- ],
- [
- 8.14915943145752,
- 12.462510108947754
- ],
- [
- 8.160175323486328,
- 12.528459548950195
- ],
- [
- 8.155200958251953,
- 12.5794095993042
- ],
- [
- 8.147226333618164,
- 12.619379997253418
- ],
- [
- 8.148235321044922,
- 12.645350456237793
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "23",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.707547187805176,
- 12.12572956085205,
- 9.131059646606445,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.785566329956055,
- 12.532369613647461
- ],
- [
- 8.855527877807617,
- 12.606300354003906
- ],
- [
- 8.913296699523926,
- 12.609800338745117
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.784432411193848,
- 12.206660270690918
- ],
- [
- 8.758467674255371,
- 12.230640411376953
- ],
- [
- 8.767485618591309,
- 12.29557991027832
- ],
- [
- 8.707547187805176,
- 12.302590370178223
- ],
- [
- 8.7083158493042,
- 12.350500106811523
- ],
- [
- 8.708919525146484,
- 12.39048957824707
- ],
- [
- 8.709477424621582,
- 12.4273099899292
- ],
- [
- 8.726524353027344,
- 12.455209732055664
- ],
- [
- 8.75838565826416,
- 12.49685001373291
- ],
- [
- 8.785566329956055,
- 12.532369613647461
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "24",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.124277114868164,
- 12.182160377502441,
- 9.394844055175781,
- 12.63424015045166
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.124277114868164,
- 12.63424015045166
- ],
- [
- 9.258048057556152,
- 12.630610466003418
- ],
- [
- 9.383021354675293,
- 12.627209663391113
- ],
- [
- 9.386005401611328,
- 12.596240043640137
- ],
- [
- 9.35901927947998,
- 12.56527042388916
- ],
- [
- 9.357977867126465,
- 12.462360382080078
- ],
- [
- 9.380951881408691,
- 12.45536994934082
- ],
- [
- 9.38573932647705,
- 12.361639976501465
- ],
- [
- 9.386472702026367,
- 12.34727954864502
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.129522323608398,
- 12.284629821777344
- ],
- [
- 9.127169609069824,
- 12.441459655761719
- ],
- [
- 9.124981880187988,
- 12.587260246276855
- ],
- [
- 9.124277114868164,
- 12.63424015045166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "25",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.468775749206543,
- 12.002750396728516,
- 10.007160186767578,
- 12.341389656066895
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.656930923461914,
- 12.274029731750488
- ],
- [
- 9.841083526611328,
- 12.314740180969238
- ],
- [
- 9.96633243560791,
- 12.341389656066895
- ],
- [
- 10.001230239868164,
- 12.170539855957031
- ],
- [
- 9.884350776672363,
- 12.191530227661133
- ],
- [
- 9.892878532409668,
- 12.173850059509277
- ],
- [
- 9.899951934814453,
- 12.163689613342285
- ],
- [
- 9.914779663085938,
- 12.142390251159668
- ],
- [
- 9.956293106079102,
- 12.08275032043457
- ],
- [
- 9.991960525512695,
- 12.031510353088379
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "26",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.734999656677246,
- 9.492551803588867,
- 12.234550476074219
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.394844055175781,
- 12.22655963897705
- ],
- [
- 9.468775749206543,
- 12.234550476074219
- ],
- [
- 9.478416442871094,
- 12.161820411682129
- ],
- [
- 9.481962203979492,
- 12.065779685974121
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.25829792022705,
- 12.203579902648926
- ],
- [
- 9.394844055175781,
- 12.22655963897705
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "27",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.790384292602539,
- 11.792989730834961,
- 9.131059646606445,
- 12.182160377502441
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.116094589233398,
- 12.17965030670166
- ],
- [
- 9.131059646606445,
- 12.182160377502441
- ],
- [
- 9.115089416503906,
- 12.158659934997559
- ],
- [
- 9.103628158569336,
- 12.128439903259277
- ],
- [
- 9.100104331970215,
- 12.063579559326172
- ],
- [
- 9.098085403442383,
- 12.025779724121094
- ],
- [
- 9.093652725219727,
- 11.930830001831055
- ],
- [
- 9.090069770812988,
- 11.873970031738281
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.95518970489502,
- 12.153010368347168
- ],
- [
- 9.116094589233398,
- 12.17965030670166
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "28",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.386432647705078,
- 11.785490036010742,
- 8.898137092590332,
- 12.12572956085205
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.643799781799316,
- 12.102089881896973
- ],
- [
- 8.790392875671387,
- 12.12572956085205
- ],
- [
- 8.790384292602539,
- 12.10575008392334
- ],
- [
- 8.81535530090332,
- 12.09276008605957
- ],
- [
- 8.813672065734863,
- 12.06682014465332
- ],
- [
- 8.811333656311035,
- 12.030810356140137
- ],
- [
- 8.868269920349121,
- 12.013819694519043
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.618428230285645,
- 11.80504035949707
- ],
- [
- 8.508537292480469,
- 11.809040069580078
- ],
- [
- 8.386432647705078,
- 11.785490036010742
- ],
- [
- 8.404298782348633,
- 11.800470352172852
- ],
- [
- 8.412508010864258,
- 11.807350158691406
- ],
- [
- 8.455998420715332,
- 11.847610473632812
- ],
- [
- 8.471677780151367,
- 11.863730430603027
- ],
- [
- 8.517660140991211,
- 11.91471004486084
- ],
- [
- 8.525978088378906,
- 11.924659729003906
- ],
- [
- 8.563572883605957,
- 12.023850440979004
- ],
- [
- 8.544462203979492,
- 12.073599815368652
- ],
- [
- 8.538623809814453,
- 12.088789939880371
- ],
- [
- 8.643799781799316,
- 12.102089881896973
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "29",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.781330108642578,
- 7.185831069946289,
- 12.078980445861816
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.7633137702941895,
- 11.981120109558105
- ],
- [
- 6.942171096801758,
- 12.0560302734375
- ],
- [
- 7.004114151000977,
- 12.067009925842285
- ],
- [
- 7.078045845031738,
- 12.076990127563477
- ],
- [
- 7.125000953674316,
- 12.078980445861816
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.674379825592041,
- 11.931170463562012
- ],
- [
- 6.7633137702941895,
- 11.981120109558105
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "30",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.424249649047852,
- 11.633870124816895,
- 11.204830169677734,
- 12.037540435791016
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.424249649047852,
- 11.990639686584473
- ],
- [
- 10.640899658203125,
- 12.0131196975708
- ],
- [
- 10.876319885253906,
- 12.037540435791016
- ],
- [
- 10.886269569396973,
- 11.946619987487793
- ],
- [
- 10.915240287780762,
- 11.941619873046875
- ],
- [
- 10.932220458984375,
- 11.938619613647461
- ],
- [
- 10.963190078735352,
- 11.940620422363281
- ],
- [
- 10.983169555664062,
- 11.936619758605957
- ],
- [
- 10.995160102844238,
- 11.937620162963867
- ],
- [
- 11.045080184936523,
- 11.853679656982422
- ],
- [
- 11.112970352172852,
- 11.761759757995605
- ],
- [
- 11.204830169677734,
- 11.638850212097168
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.424249649047852,
- 11.990639686584473
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "31",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.480667114257812,
- 11.76294994354248,
- 10.049909591674805,
- 12.009679794311523
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.480667114257812,
- 12.002750396728516
- ],
- [
- 9.755396842956543,
- 12.004929542541504
- ],
- [
- 10.007160186767578,
- 12.009679794311523
- ],
- [
- 10.02422046661377,
- 11.962309837341309
- ],
- [
- 10.04207992553711,
- 11.912759780883789
- ],
- [
- 10.048910140991211,
- 11.858799934387207
- ],
- [
- 10.04928970336914,
- 11.822830200195312
- ],
- [
- 10.049750328063965,
- 11.778960227966309
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.488198280334473,
- 11.881449699401855
- ],
- [
- 9.482346534729004,
- 11.975689888000488
- ],
- [
- 9.480667114257812,
- 12.002750396728516
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "32",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.966993808746338,
- 11.329950332641602,
- 7.733179092407227,
- 11.872119903564453
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 7.185831069946289,
- 11.84823989868164
- ],
- [
- 7.317720890045166,
- 11.856149673461914
- ],
- [
- 7.508541107177734,
- 11.872119903564453
- ],
- [
- 7.4845499992370605,
- 11.838150024414062
- ],
- [
- 7.463559150695801,
- 11.80918025970459
- ],
- [
- 7.469532012939453,
- 11.757220268249512
- ],
- [
- 7.493495941162109,
- 11.728249549865723
- ],
- [
- 7.492452144622803,
- 11.619339942932129
- ],
- [
- 7.688279151916504,
- 11.66327953338623
- ],
- [
- 7.733179092407227,
- 11.527389526367188
- ],
- [
- 7.710183143615723,
- 11.482439994812012
- ],
- [
- 7.674202919006348,
- 11.446470260620117
- ],
- [
- 7.624241828918457,
- 11.421500205993652
- ],
- [
- 7.562289237976074,
- 11.388540267944336
- ],
- [
- 7.4683637619018555,
- 11.349579811096191
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.185831069946289,
- 11.84823989868164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "33",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.341614723205566,
- 11.531109809875488,
- 10.05659008026123,
- 11.866829872131348
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.489535331726074,
- 11.859919548034668
- ],
- [
- 9.6394681930542,
- 11.863249778747559
- ],
- [
- 9.800299644470215,
- 11.866829872131348
- ],
- [
- 9.831770896911621,
- 11.858819961547852
- ],
- [
- 9.859211921691895,
- 11.851739883422852
- ],
- [
- 9.877091407775879,
- 11.8441801071167
- ],
- [
- 9.925159454345703,
- 11.82384967803955
- ],
- [
- 9.973393440246582,
- 11.809060096740723
- ],
- [
- 9.986115455627441,
- 11.802860260009766
- ],
- [
- 10.026479721069336,
- 11.787699699401855
- ],
- [
- 10.049909591674805,
- 11.76294994354248
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 9.917131423950195,
- 11.737930297851562
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.492551803588867,
- 11.751970291137695
- ],
- [
- 9.489535331726074,
- 11.859919548034668
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "34",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.456532001495361,
- 11.439629554748535,
- 7.019946098327637,
- 11.82621955871582
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.741261005401611,
- 11.799280166625977
- ],
- [
- 7.013006210327148,
- 11.82621955871582
- ],
- [
- 7.019946098327637,
- 11.695340156555176
- ],
- [
- 6.966993808746338,
- 11.687350273132324
- ],
- [
- 6.9718852043151855,
- 11.633569717407227
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.741261005401611,
- 11.799280166625977
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "35",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.713337898254395,
- 11.434320449829102,
- 9.09585952758789,
- 11.810020446777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 8.713337898254395,
- 11.810020446777344
- ],
- [
- 8.8291654586792,
- 11.80486011505127
- ],
- [
- 8.898137092590332,
- 11.80247974395752
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.713337898254395,
- 11.810020446777344
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "36",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.084967613220215,
- 11.546170234680176,
- 9.3436918258667,
- 11.792989730834961
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.084967613220215,
- 11.792989730834961
- ],
- [
- 9.200423240661621,
- 11.767109870910645
- ],
- [
- 9.3436918258667,
- 11.734999656677246
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.085843086242676,
- 11.639080047607422
- ],
- [
- 9.084967613220215,
- 11.792989730834961
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "37",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 5.87490701675415,
- 11.057000160217285,
- 6.481366157531738,
- 11.781330108642578
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.181705951690674,
- 11.553569793701172
- ],
- [
- 6.394561767578125,
- 11.710399627685547
- ],
- [
- 6.456532001495361,
- 11.781330108642578
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.088609218597412,
- 11.097979545593262
- ],
- [
- 6.088623046875,
- 11.132949829101562
- ],
- [
- 6.084632873535156,
- 11.148940086364746
- ],
- [
- 6.085638046264648,
- 11.160920143127441
- ],
- [
- 6.035704135894775,
- 11.202890396118164
- ],
- [
- 5.9847540855407715,
- 11.203900337219238
- ],
- [
- 5.948803901672363,
- 11.239870071411133
- ],
- [
- 5.96979284286499,
- 11.263850212097168
- ],
- [
- 5.970815181732178,
- 11.31779956817627
- ],
- [
- 5.87490701675415,
- 11.313819885253906
- ],
- [
- 6.181705951690674,
- 11.553569793701172
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "38",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.05659008026123,
- 11.213310241699219,
- 10.808690071105957,
- 11.74390983581543
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.05659008026123,
- 11.74390983581543
- ],
- [
- 10.252799987792969,
- 11.742819786071777
- ],
- [
- 10.425640106201172,
- 11.741860389709473
- ],
- [
- 10.531530380249023,
- 11.743849754333496
- ],
- [
- 10.560500144958496,
- 11.723859786987305
- ],
- [
- 10.613459587097168,
- 11.723299980163574
- ],
- [
- 10.656399726867676,
- 11.72284984588623
- ],
- [
- 10.677379608154297,
- 11.72284984588623
- ],
- [
- 10.766209602355957,
- 11.720080375671387
- ],
- [
- 10.78335952758789,
- 11.719550132751465
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.613240242004395,
- 11.216300010681152
- ],
- [
- 10.595250129699707,
- 11.213310241699219
- ],
- [
- 10.555290222167969,
- 11.22029972076416
- ],
- [
- 10.480369567871094,
- 11.221309661865234
- ],
- [
- 10.421429634094238,
- 11.23231029510498
- ],
- [
- 10.364489555358887,
- 11.254300117492676
- ],
- [
- 10.343520164489746,
- 11.272279739379883
- ],
- [
- 10.329560279846191,
- 11.328240394592285
- ],
- [
- 10.320590019226074,
- 11.369199752807617
- ],
- [
- 10.279640197753906,
- 11.403180122375488
- ],
- [
- 10.226710319519043,
- 11.45613956451416
- ],
- [
- 10.168800354003906,
- 11.523090362548828
- ],
- [
- 10.109880447387695,
- 11.5900297164917
- ],
- [
- 10.07094955444336,
- 11.67197036743164
- ],
- [
- 10.05659008026123,
- 11.74390983581543
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "39",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.799189567565918,
- 11.232259750366211,
- 11.141839981079102,
- 11.72780990600586
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 10.806260108947754,
- 11.718830108642578
- ],
- [
- 10.878219604492188,
- 11.723259925842285
- ],
- [
- 10.952119827270508,
- 11.72780990600586
- ],
- [
- 10.974069595336914,
- 11.661860466003418
- ],
- [
- 11.073969841003418,
- 11.65785026550293
- ],
- [
- 11.126910209655762,
- 11.633870124816895
- ],
- [
- 11.126890182495117,
- 11.59589958190918
- ],
- [
- 11.138870239257812,
- 11.56991958618164
- ],
- [
- 11.139849662780762,
- 11.530960083007812
- ],
- [
- 11.141839981079102,
- 11.505979537963867
- ],
- [
- 11.12285041809082,
- 11.492989540100098
- ],
- [
- 11.122790336608887,
- 11.336130142211914
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.802140235900879,
- 11.434080123901367
- ],
- [
- 10.799189567565918,
- 11.53499984741211
- ],
- [
- 10.804929733276367,
- 11.558989524841309
- ],
- [
- 10.808690071105957,
- 11.57466983795166
- ],
- [
- 10.808199882507324,
- 11.590950012207031
- ],
- [
- 10.806090354919434,
- 11.620909690856934
- ],
- [
- 10.80321979522705,
- 11.661589622497559
- ],
- [
- 10.802240371704102,
- 11.674869537353516
- ],
- [
- 10.806260108947754,
- 11.718830108642578
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "40",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.7540388107299805,
- 10.997920036315918,
- 7.404403209686279,
- 11.586389541625977
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.758334159851074,
- 11.462329864501953
- ],
- [
- 6.77780818939209,
- 11.465909957885742
- ],
- [
- 6.8914008140563965,
- 11.479410171508789
- ],
- [
- 6.9848952293396,
- 11.490519523620605
- ],
- [
- 7.123810768127441,
- 11.530790328979492
- ],
- [
- 7.315611839294434,
- 11.586389541625977
- ],
- [
- 7.375504970550537,
- 11.471489906311035
- ],
- [
- 7.398374080657959,
- 11.329950332641602
- ],
- [
- 7.404403209686279,
- 11.29263973236084
- ],
- [
- 7.38238000869751,
- 11.18474006652832
- ],
- [
- 7.359377861022949,
- 11.12479019165039
- ],
- [
- 7.327386856079102,
- 11.071849822998047
- ],
- [
- 7.275406837463379,
- 10.997920036315918
- ],
- [
- 6.82789421081543,
- 11.116869926452637
- ],
- [
- 6.879881858825684,
- 11.211779594421387
- ],
- [
- 6.81195592880249,
- 11.22877025604248
- ],
- [
- 6.83095121383667,
- 11.262740135192871
- ],
- [
- 6.771010875701904,
- 11.26574993133545
- ],
- [
- 6.7540388107299805,
- 11.292719841003418
- ],
- [
- 6.7860212326049805,
- 11.325690269470215
- ],
- [
- 6.778051853179932,
- 11.380640029907227
- ],
- [
- 6.758076190948486,
- 11.392629623413086
- ],
- [
- 6.758334159851074,
- 11.462329864501953
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "41",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.082836151123047,
- 11.308409690856934,
- 9.341614723205566,
- 11.559189796447754
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.09585952758789,
- 11.559189796447754
- ],
- [
- 9.20775318145752,
- 11.55325984954834
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.09585952758789,
- 11.559189796447754
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "42",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.335508346557617,
- 11.211409568786621,
- 9.963891983032227,
- 11.546170234680176
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.341614723205566,
- 11.546170234680176
- ],
- [
- 9.500506401062012,
- 11.542019844055176
- ],
- [
- 9.918045997619629,
- 11.531109809875488
- ],
- [
- 9.963891983032227,
- 11.268340110778809
- ],
- [
- 9.778072357177734,
- 11.265359878540039
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.341614723205566,
- 11.546170234680176
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "43",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 8.622117042541504,
- 10.821869850158691,
- 9.178548812866211,
- 11.46030044555664
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.000834465026855,
- 11.458020210266113
- ],
- [
- 9.082836151123047,
- 11.456330299377441
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 8.85079574584961,
- 10.821869850158691
- ],
- [
- 8.815848350524902,
- 10.867839813232422
- ],
- [
- 8.789886474609375,
- 10.899809837341309
- ],
- [
- 8.7659273147583,
- 10.938779830932617
- ],
- [
- 8.752955436706543,
- 10.978750228881836
- ],
- [
- 8.747973442077637,
- 11.010720252990723
- ],
- [
- 8.753978729248047,
- 11.035699844360352
- ],
- [
- 8.750991821289062,
- 11.060669898986816
- ],
- [
- 8.622117042541504,
- 11.059690475463867
- ],
- [
- 8.631120681762695,
- 11.089659690856934
- ],
- [
- 8.634133338928223,
- 11.126629829406738
- ],
- [
- 8.63216495513916,
- 11.199569702148438
- ],
- [
- 8.665151596069336,
- 11.246520042419434
- ],
- [
- 8.68313980102539,
- 11.2575101852417
- ],
- [
- 8.69713020324707,
- 11.267499923706055
- ],
- [
- 8.67520809173584,
- 11.405380249023438
- ],
- [
- 8.77213191986084,
- 11.450329780578613
- ],
- [
- 8.922977447509766,
- 11.434320449829102
- ],
- [
- 8.935976028442383,
- 11.46030044555664
- ],
- [
- 9.000834465026855,
- 11.458020210266113
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "44",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 6.167585849761963,
- 10.97803020477295,
- 6.6781768798828125,
- 11.447600364685059
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 6.481366157531738,
- 11.439629554748535
- ],
- [
- 6.558311939239502,
- 11.44219970703125
- ],
- [
- 6.61027717590332,
- 11.444780349731445
- ],
- [
- 6.6781768798828125,
- 11.447600364685059
- ],
- [
- 6.6491851806640625,
- 11.399640083312988
- ],
- [
- 6.647164821624756,
- 11.344690322875977
- ],
- [
- 6.639161109924316,
- 11.315719604492188
- ],
- [
- 6.522275924682617,
- 11.318730354309082
- ],
- [
- 6.520257949829102,
- 11.269769668579102
- ],
- [
- 6.5162482261657715,
- 11.236800193786621
- ],
- [
- 6.542212009429932,
- 11.209819793701172
- ],
- [
- 6.549192905426025,
- 11.1808500289917
- ],
- [
- 6.55515718460083,
- 11.10791015625
- ],
- [
- 6.534173011779785,
- 11.096920013427734
- ],
- [
- 6.537120819091797,
- 10.97803020477295
- ],
- [
- 6.220462799072266,
- 11.057000160217285
- ],
- [
- 6.220479965209961,
- 11.099960327148438
- ],
- [
- 6.212475776672363,
- 11.122119903564453
- ],
- [
- 6.1806111335754395,
- 11.167719841003418
- ],
- [
- 6.179293155670166,
- 11.18159008026123
- ],
- [
- 6.167585849761963,
- 11.230850219726562
- ],
- [
- 6.316442012786865,
- 11.232830047607422
- ],
- [
- 6.3594160079956055,
- 11.27379035949707
- ],
- [
- 6.356451034545898,
- 11.349720001220703
- ],
- [
- 6.335484027862549,
- 11.38070011138916
- ],
- [
- 6.335865020751953,
- 11.39568042755127
- ],
- [
- 6.33650016784668,
- 11.420660018920898
- ],
- [
- 6.481366157531738,
- 11.439629554748535
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "45",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 10.588159561157227,
- 10.788629531860352,
- 11.287420272827148,
- 11.315879821777344
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 11.098469734191895,
- 11.303170204162598
- ],
- [
- 11.122209548950195,
- 11.315879821777344
- ],
- [
- 11.120759963989258,
- 11.265190124511719
- ],
- [
- 11.119729995727539,
- 11.199250221252441
- ],
- [
- 11.123700141906738,
- 11.127309799194336
- ],
- [
- 11.14465045928955,
- 11.05636978149414
- ],
- [
- 11.181599617004395,
- 11.025400161743164
- ],
- [
- 11.221540451049805,
- 10.978429794311523
- ],
- [
- 11.256489753723145,
- 10.922479629516602
- ],
- [
- 11.275449752807617,
- 10.888500213623047
- ],
- [
- 11.287420272827148,
- 10.84253978729248
- ],
- [
- 11.286399841308594,
- 10.790590286254883
- ],
- [
- 11.013669967651367,
- 10.788629531860352
- ],
- [
- 10.963720321655273,
- 10.799619674682617
- ],
- [
- 10.88379955291748,
- 10.80762004852295
- ],
- [
- 10.781900405883789,
- 10.812629699707031
- ],
- [
- 10.708979606628418,
- 10.819640159606934
- ],
- [
- 10.694000244140625,
- 10.833629608154297
- ],
- [
- 10.649069786071777,
- 10.890580177307129
- ],
- [
- 10.616109848022461,
- 10.925559997558594
- ],
- [
- 10.588159561157227,
- 10.978509902954102
- ],
- [
- 10.592169761657715,
- 10.994500160217285
- ],
- [
- 10.691129684448242,
- 11.140359878540039
- ],
- [
- 10.687170028686523,
- 11.2222900390625
- ],
- [
- 10.73412036895752,
- 11.228269577026367
- ],
- [
- 10.8020601272583,
- 11.232259750366211
- ],
- [
- 10.818880081176758,
- 11.235170364379883
- ],
- [
- 10.840740203857422,
- 11.238940238952637
- ],
- [
- 10.8774995803833,
- 11.246870040893555
- ],
- [
- 10.901860237121582,
- 11.252129554748535
- ],
- [
- 10.919949531555176,
- 11.254229545593262
- ],
- [
- 10.963910102844238,
- 11.265210151672363
- ],
- [
- 11.014869689941406,
- 11.274200439453125
- ],
- [
- 11.06859016418457,
- 11.2918701171875
- ],
- [
- 11.078960418701172,
- 11.295280456542969
- ],
- [
- 11.098469734191895,
- 11.303170204162598
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "46",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.093674659729004,
- 11.048029899597168,
- 9.3948974609375,
- 11.312379837036133
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.207670211791992,
- 11.31017017364502
- ],
- [
- 9.338521957397461,
- 11.312379837036133
- ],
- [
- 9.335508346557617,
- 11.27241039276123
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.174186706542969,
- 11.060310363769531
- ],
- [
- 9.171592712402344,
- 11.09158992767334
- ],
- [
- 9.093674659729004,
- 11.10359001159668
- ],
- [
- 9.098838806152344,
- 11.115389823913574
- ],
- [
- 9.107674598693848,
- 11.135560035705566
- ],
- [
- 9.111679077148438,
- 11.157540321350098
- ],
- [
- 9.10374927520752,
- 11.308409690856934
- ],
- [
- 9.207670211791992,
- 11.31017017364502
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "47",
- "properties": {},
- "type": "Feature"
- },
- {
- "bbox": [
- 9.095559120178223,
- 10.828829765319824,
- 9.78189754486084,
- 11.285369873046875
- ],
- "geometry": {
- "coordinates": [
- [
- [
- 9.391454696655273,
- 11.275400161743164
- ],
- [
- 9.546306610107422,
- 11.285369873046875
- ],
- [
- 9.5482759475708,
- 11.21343994140625
- ],
- [
- 9.656153678894043,
- 11.212479591369629
- ],
- [
- 9.776052474975586,
- 11.211409568786621
- ],
- [
- 9.779011726379395,
- 11.118490219116211
- ],
- [
- 9.774969100952148,
- 11.007590293884277
- ],
- [
- 9.775935173034668,
- 10.92866039276123
- ],
- [
- 9.78189754486084,
- 10.853730201721191
- ],
- [
- 9.095559120178223,
- 10.828829765319824
- ],
- [
- 9.10042953491211,
- 10.899089813232422
- ],
- [
- 9.135557174682617,
- 10.917750358581543
- ],
- [
- 9.146570205688477,
- 10.976699829101562
- ],
- [
- 9.178548812866211,
- 10.999670028686523
- ],
- [
- 9.175572395324707,
- 11.048629760742188
- ],
- [
- 9.282283782958984,
- 11.048029899597168
- ],
- [
- 9.393360137939453,
- 11.052599906921387
- ],
- [
- 9.39454460144043,
- 11.139530181884766
- ],
- [
- 9.3948974609375,
- 11.165470123291016
- ],
- [
- 9.393250465393066,
- 11.251399993896484
- ],
- [
- 9.39303207397461,
- 11.262740135192871
- ],
- [
- 9.391454696655273,
- 11.275400161743164
- ]
- ]
- ],
- "type": "Polygon"
- },
- "id": "48",
- "properties": {},
- "type": "Feature"
- }
- ],
- "type": "FeatureCollection"
- },
- "hovertemplate": "cluster=2
locations=%{location}",
- "locations": [
- 26,
- 27,
- 32,
- 34,
- 36,
- 42,
- 43,
- 44,
- 47,
- 48
- ],
- "name": "2",
- "showlegend": true,
- "showscale": false,
- "type": "choropleth",
- "z": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ]
- }
- ],
- "layout": {
- "geo": {
- "center": {},
- "domain": {
- "x": [
- 0.0,
- 1.0
- ],
- "y": [
- 0.0,
- 1.0
- ]
- },
- "fitbounds": "locations",
- "visible": false
- },
- "legend": {
- "title": {
- "text": "cluster"
- },
- "tracegroupgap": 0
- },
- "margin": {
- "t": 60
- },
- "template": {
- "data": {
- "bar": [
- {
- "error_x": {
- "color": "#2a3f5f"
- },
- "error_y": {
- "color": "#2a3f5f"
- },
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "bar"
- }
- ],
- "barpolar": [
- {
- "marker": {
- "line": {
- "color": "#E5ECF6",
- "width": 0.5
- },
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "barpolar"
- }
- ],
- "carpet": [
- {
- "aaxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "baxis": {
- "endlinecolor": "#2a3f5f",
- "gridcolor": "white",
- "linecolor": "white",
- "minorgridcolor": "white",
- "startlinecolor": "#2a3f5f"
- },
- "type": "carpet"
- }
- ],
- "choropleth": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "choropleth"
- }
- ],
- "contour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "contour"
- }
- ],
- "contourcarpet": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "contourcarpet"
- }
- ],
- "heatmap": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "heatmap"
- }
- ],
- "heatmapgl": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "heatmapgl"
- }
- ],
- "histogram": [
- {
- "marker": {
- "pattern": {
- "fillmode": "overlay",
- "size": 10,
- "solidity": 0.2
- }
- },
- "type": "histogram"
- }
- ],
- "histogram2d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "histogram2d"
- }
- ],
- "histogram2dcontour": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "histogram2dcontour"
- }
- ],
- "mesh3d": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "type": "mesh3d"
- }
- ],
- "parcoords": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "parcoords"
- }
- ],
- "pie": [
- {
- "automargin": true,
- "type": "pie"
- }
- ],
- "scatter": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter"
- }
- ],
- "scatter3d": [
- {
- "line": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatter3d"
- }
- ],
- "scattercarpet": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattercarpet"
- }
- ],
- "scattergeo": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergeo"
- }
- ],
- "scattergl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattergl"
- }
- ],
- "scattermapbox": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scattermapbox"
- }
- ],
- "scatterpolar": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolar"
- }
- ],
- "scatterpolargl": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterpolargl"
- }
- ],
- "scatterternary": [
- {
- "marker": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "type": "scatterternary"
- }
- ],
- "surface": [
- {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- },
- "colorscale": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "type": "surface"
- }
- ],
- "table": [
- {
- "cells": {
- "fill": {
- "color": "#EBF0F8"
- },
- "line": {
- "color": "white"
- }
- },
- "header": {
- "fill": {
- "color": "#C8D4E3"
- },
- "line": {
- "color": "white"
- }
- },
- "type": "table"
- }
- ]
- },
- "layout": {
- "annotationdefaults": {
- "arrowcolor": "#2a3f5f",
- "arrowhead": 0,
- "arrowwidth": 1
- },
- "autotypenumbers": "strict",
- "coloraxis": {
- "colorbar": {
- "outlinewidth": 0,
- "ticks": ""
- }
- },
- "colorscale": {
- "diverging": [
- [
- 0,
- "#8e0152"
- ],
- [
- 0.1,
- "#c51b7d"
- ],
- [
- 0.2,
- "#de77ae"
- ],
- [
- 0.3,
- "#f1b6da"
- ],
- [
- 0.4,
- "#fde0ef"
- ],
- [
- 0.5,
- "#f7f7f7"
- ],
- [
- 0.6,
- "#e6f5d0"
- ],
- [
- 0.7,
- "#b8e186"
- ],
- [
- 0.8,
- "#7fbc41"
- ],
- [
- 0.9,
- "#4d9221"
- ],
- [
- 1,
- "#276419"
- ]
- ],
- "sequential": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ],
- "sequentialminus": [
- [
- 0.0,
- "#0d0887"
- ],
- [
- 0.1111111111111111,
- "#46039f"
- ],
- [
- 0.2222222222222222,
- "#7201a8"
- ],
- [
- 0.3333333333333333,
- "#9c179e"
- ],
- [
- 0.4444444444444444,
- "#bd3786"
- ],
- [
- 0.5555555555555556,
- "#d8576b"
- ],
- [
- 0.6666666666666666,
- "#ed7953"
- ],
- [
- 0.7777777777777778,
- "#fb9f3a"
- ],
- [
- 0.8888888888888888,
- "#fdca26"
- ],
- [
- 1.0,
- "#f0f921"
- ]
- ]
- },
- "colorway": [
- "#636efa",
- "#EF553B",
- "#00cc96",
- "#ab63fa",
- "#FFA15A",
- "#19d3f3",
- "#FF6692",
- "#B6E880",
- "#FF97FF",
- "#FECB52"
- ],
- "font": {
- "color": "#2a3f5f"
- },
- "geo": {
- "bgcolor": "white",
- "lakecolor": "white",
- "landcolor": "#E5ECF6",
- "showlakes": true,
- "showland": true,
- "subunitcolor": "white"
- },
- "hoverlabel": {
- "align": "left"
- },
- "hovermode": "closest",
- "mapbox": {
- "style": "light"
- },
- "paper_bgcolor": "white",
- "plot_bgcolor": "#E5ECF6",
- "polar": {
- "angularaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "radialaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "scene": {
- "xaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "yaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- },
- "zaxis": {
- "backgroundcolor": "#E5ECF6",
- "gridcolor": "white",
- "gridwidth": 2,
- "linecolor": "white",
- "showbackground": true,
- "ticks": "",
- "zerolinecolor": "white"
- }
- },
- "shapedefaults": {
- "line": {
- "color": "#2a3f5f"
- }
- },
- "ternary": {
- "aaxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "baxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- },
- "bgcolor": "#E5ECF6",
- "caxis": {
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": ""
- }
- },
- "title": {
- "x": 0.05
- },
- "xaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- },
- "yaxis": {
- "automargin": true,
- "gridcolor": "white",
- "linecolor": "white",
- "ticks": "",
- "title": {
- "standoff": 15
- },
- "zerolinecolor": "white",
- "zerolinewidth": 2
- }
- }
- }
- }
- },
- "text/html": [
- ""
+ "image/png": "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\n",
+ "text/plain": [
+ ""
]
},
"metadata": {},
@@ -42992,25 +174,22 @@
}
],
"source": [
- "# _trace[k-1][0] contains the cluster allocation for k clusters.\n",
- "fig = px.choropleth(pd.concat([data,pd.Series(results._trace[2][0].astype(str), name='cluster', index=data.index)], axis=1),\n",
- " geojson=data.geometry,\n",
- " locations=data.index,\n",
- " color=\"cluster\")\n",
- "fig.update_geos(fitbounds=\"locations\", visible=False)\n",
- "fig.show()"
+ "data[\"cl_regions\"] = results._trace[11][0]\n",
+ "data.plot(column=\"cl_regions\", categorical=True, legend=True, cmap='Paired').axis(\"off\")"
]
},
{
"cell_type": "markdown",
+ "id": "9bef8f61",
"metadata": {},
"source": [
- "### With the cluster allocations, we can call the Regimes methods in spreg to get the full regression results."
+ "With the cluster allocations and selected number of clusters, we can call the Regimes methods in Spreg to get the full regression results and Chow tests on the stability of the coefficients accross the 12 different clusters."
]
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 6,
+ "id": "b13e7942",
"metadata": {},
"outputs": [
{
@@ -43024,172 +203,490 @@
"---------------------------------------------------------------\n",
"Data set : unknown\n",
"Weights matrix : unknown\n",
- "Dependent Variable : 0_['HOVAL'] Number of Observations: 19\n",
- "Mean dependent var : 33.0149 Number of Variables : 3\n",
- "S.D. dependent var : 18.0570 Degrees of Freedom : 16\n",
- "R-squared : 0.5949\n",
- "Adjusted R-squared : 0.5442\n",
- "Sum squared residual: 2377.791 F-statistic : 11.7460\n",
- "Sigma-square : 148.612 Prob(F-statistic) : 0.0007259\n",
- "S.E. of regression : 12.191 Log likelihood : -72.840\n",
- "Sigma-square ML : 125.147 Akaike info criterion : 151.680\n",
- "S.E of regression ML: 11.1869 Schwarz criterion : 154.513\n",
+ "Dependent Variable : 0_['HR90'] Number of Observations: 604\n",
+ "Mean dependent var : 2.4577 Number of Variables : 4\n",
+ "S.D. dependent var : 3.9266 Degrees of Freedom : 600\n",
+ "R-squared : 0.3305\n",
+ "Adjusted R-squared : 0.3271\n",
+ "Sum squared residual: 6224.952 F-statistic : 98.7116\n",
+ "Sigma-square : 10.375 Prob(F-statistic) : 6.109e-52\n",
+ "S.E. of regression : 3.221 Log likelihood : -1561.528\n",
+ "Sigma-square ML : 10.306 Akaike info criterion : 3131.057\n",
+ "S.E of regression ML: 3.2103 Schwarz criterion : 3148.671\n",
"\n",
"------------------------------------------------------------------------------------\n",
" Variable Coefficient Std.Error t-Statistic Probability\n",
"------------------------------------------------------------------------------------\n",
- " 0_CONSTANT 58.9541294 13.3800487 4.4061222 0.0004416\n",
- " 0_INC 0.4907925 0.7498945 0.6544820 0.5220989\n",
- " 0_CRIME -0.7151327 0.1709048 -4.1843910 0.0007010\n",
+ " 0_CONSTANT 4.0851876 0.4756999 8.5877407 0.0000000\n",
+ " 0_RD90 3.1288181 0.2856649 10.9527571 0.0000000\n",
+ " 0_PS90 1.4553321 0.1760078 8.2685645 0.0000000\n",
+ " 0_UE90 0.0530250 0.0612926 0.8651115 0.3873233\n",
"------------------------------------------------------------------------------------\n",
"Regimes variable: skater_reg\n",
"\n",
"REGRESSION DIAGNOSTICS\n",
- "MULTICOLLINEARITY CONDITION NUMBER 9.907\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 7.255\n",
"\n",
"TEST ON NORMALITY OF ERRORS\n",
"TEST DF VALUE PROB\n",
- "Jarque-Bera 2 1.054 0.5903\n",
+ "Jarque-Bera 2 20184.603 0.0000\n",
"\n",
"DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
"RANDOM COEFFICIENTS\n",
"TEST DF VALUE PROB\n",
- "Breusch-Pagan test 2 3.788 0.1505\n",
- "Koenker-Bassett test 2 5.554 0.0622\n",
+ "Breusch-Pagan test 3 69.424 0.0000\n",
+ "Koenker-Bassett test 3 4.695 0.1956\n",
"----------\n",
"\n",
"SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 1\n",
"---------------------------------------------------------------\n",
"Data set : unknown\n",
"Weights matrix : unknown\n",
- "Dependent Variable : 1_['HOVAL'] Number of Observations: 10\n",
- "Mean dependent var : 53.5350 Number of Variables : 3\n",
- "S.D. dependent var : 20.7972 Degrees of Freedom : 7\n",
- "R-squared : 0.0802\n",
- "Adjusted R-squared : -0.1825\n",
- "Sum squared residual: 3580.319 F-statistic : 0.3054\n",
- "Sigma-square : 511.474 Prob(F-statistic) : 0.7462\n",
- "S.E. of regression : 22.616 Log likelihood : -43.592\n",
- "Sigma-square ML : 358.032 Akaike info criterion : 93.185\n",
- "S.E of regression ML: 18.9217 Schwarz criterion : 94.093\n",
+ "Dependent Variable : 1_['HR90'] Number of Observations: 180\n",
+ "Mean dependent var : 2.6269 Number of Variables : 4\n",
+ "S.D. dependent var : 4.5592 Degrees of Freedom : 176\n",
+ "R-squared : 0.1473\n",
+ "Adjusted R-squared : 0.1328\n",
+ "Sum squared residual: 3172.661 F-statistic : 10.1339\n",
+ "Sigma-square : 18.026 Prob(F-statistic) : 3.424e-06\n",
+ "S.E. of regression : 4.246 Log likelihood : -513.652\n",
+ "Sigma-square ML : 17.626 Akaike info criterion : 1035.304\n",
+ "S.E of regression ML: 4.1983 Schwarz criterion : 1048.076\n",
"\n",
"------------------------------------------------------------------------------------\n",
" Variable Coefficient Std.Error t-Statistic Probability\n",
"------------------------------------------------------------------------------------\n",
- " 1_CONSTANT 12.8763423 93.0707480 0.1383500 0.8938596\n",
- " 1_INC 1.5088923 2.7661286 0.5454889 0.6023577\n",
- " 1_CRIME 0.4614679 1.7305497 0.2666597 0.7974158\n",
+ " 1_CONSTANT 1.6802968 1.0041720 1.6733157 0.0960416\n",
+ " 1_RD90 0.9214816 0.7386502 1.2475210 0.2138639\n",
+ " 1_PS90 0.5520464 0.3817853 1.4459601 0.1499668\n",
+ " 1_UE90 0.3793060 0.1012117 3.7476508 0.0002418\n",
"------------------------------------------------------------------------------------\n",
"Regimes variable: skater_reg\n",
"\n",
"REGRESSION DIAGNOSTICS\n",
- "MULTICOLLINEARITY CONDITION NUMBER 27.133\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 6.525\n",
"\n",
"TEST ON NORMALITY OF ERRORS\n",
"TEST DF VALUE PROB\n",
- "Jarque-Bera 2 4.445 0.1083\n",
+ "Jarque-Bera 2 4249.029 0.0000\n",
"\n",
"DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
"RANDOM COEFFICIENTS\n",
"TEST DF VALUE PROB\n",
- "Breusch-Pagan test 2 1.865 0.3935\n",
- "Koenker-Bassett test 2 1.146 0.5637\n",
+ "Breusch-Pagan test 3 6.927 0.0743\n",
+ "Koenker-Bassett test 3 0.565 0.9044\n",
"----------\n",
"\n",
"SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 2\n",
"---------------------------------------------------------------\n",
"Data set : unknown\n",
"Weights matrix : unknown\n",
- "Dependent Variable : 2_['HOVAL'] Number of Observations: 10\n",
- "Mean dependent var : 42.0358 Number of Variables : 3\n",
- "S.D. dependent var : 16.8610 Degrees of Freedom : 7\n",
- "R-squared : 0.0849\n",
- "Adjusted R-squared : -0.1766\n",
- "Sum squared residual: 2341.457 F-statistic : 0.3246\n",
- "Sigma-square : 334.494 Prob(F-statistic) : 0.7331\n",
- "S.E. of regression : 18.289 Log likelihood : -41.469\n",
- "Sigma-square ML : 234.146 Akaike info criterion : 88.938\n",
- "S.E of regression ML: 15.3018 Schwarz criterion : 89.846\n",
+ "Dependent Variable : 2_['HR90'] Number of Observations: 105\n",
+ "Mean dependent var : 5.4586 Number of Variables : 4\n",
+ "S.D. dependent var : 3.9328 Degrees of Freedom : 101\n",
+ "R-squared : 0.6004\n",
+ "Adjusted R-squared : 0.5885\n",
+ "Sum squared residual: 642.756 F-statistic : 50.5868\n",
+ "Sigma-square : 6.364 Prob(F-statistic) : 4.794e-20\n",
+ "S.E. of regression : 2.523 Log likelihood : -244.108\n",
+ "Sigma-square ML : 6.121 Akaike info criterion : 496.217\n",
+ "S.E of regression ML: 2.4742 Schwarz criterion : 506.832\n",
"\n",
"------------------------------------------------------------------------------------\n",
" Variable Coefficient Std.Error t-Statistic Probability\n",
"------------------------------------------------------------------------------------\n",
- " 2_CONSTANT 11.1682754 53.4235094 0.2090517 0.8403613\n",
- " 2_INC 1.5447243 2.2293290 0.6929100 0.5106934\n",
- " 2_CRIME 0.1996688 0.6863689 0.2909059 0.7795537\n",
+ " 2_CONSTANT 2.9279569 1.6500241 1.7744934 0.0789946\n",
+ " 2_RD90 3.8978472 0.8119511 4.8005936 0.0000055\n",
+ " 2_PS90 2.5952604 0.2458875 10.5546660 0.0000000\n",
+ " 2_UE90 0.3236171 0.1945793 1.6631633 0.0993799\n",
"------------------------------------------------------------------------------------\n",
"Regimes variable: skater_reg\n",
"\n",
"REGRESSION DIAGNOSTICS\n",
- "MULTICOLLINEARITY CONDITION NUMBER 19.463\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 15.160\n",
"\n",
"TEST ON NORMALITY OF ERRORS\n",
"TEST DF VALUE PROB\n",
- "Jarque-Bera 2 1.957 0.3760\n",
+ "Jarque-Bera 2 6.807 0.0333\n",
"\n",
"DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
"RANDOM COEFFICIENTS\n",
"TEST DF VALUE PROB\n",
- "Breusch-Pagan test 2 0.228 0.8921\n",
- "Koenker-Bassett test 2 0.261 0.8776\n",
+ "Breusch-Pagan test 3 15.329 0.0016\n",
+ "Koenker-Bassett test 3 14.809 0.0020\n",
"----------\n",
"\n",
"SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 3\n",
"---------------------------------------------------------------\n",
"Data set : unknown\n",
"Weights matrix : unknown\n",
- "Dependent Variable : 3_['HOVAL'] Number of Observations: 10\n",
- "Mean dependent var : 30.0383 Number of Variables : 3\n",
- "S.D. dependent var : 6.4509 Degrees of Freedom : 7\n",
- "R-squared : 0.8050\n",
- "Adjusted R-squared : 0.7493\n",
- "Sum squared residual: 73.037 F-statistic : 14.4476\n",
- "Sigma-square : 10.434 Prob(F-statistic) : 0.003275\n",
- "S.E. of regression : 3.230 Log likelihood : -24.131\n",
- "Sigma-square ML : 7.304 Akaike info criterion : 54.263\n",
- "S.E of regression ML: 2.7025 Schwarz criterion : 55.170\n",
+ "Dependent Variable : 3_['HR90'] Number of Observations: 157\n",
+ "Mean dependent var : 3.2521 Number of Variables : 4\n",
+ "S.D. dependent var : 3.4925 Degrees of Freedom : 153\n",
+ "R-squared : 0.3735\n",
+ "Adjusted R-squared : 0.3612\n",
+ "Sum squared residual: 1192.118 F-statistic : 30.4049\n",
+ "Sigma-square : 7.792 Prob(F-statistic) : 1.785e-15\n",
+ "S.E. of regression : 2.791 Log likelihood : -381.912\n",
+ "Sigma-square ML : 7.593 Akaike info criterion : 771.824\n",
+ "S.E of regression ML: 2.7556 Schwarz criterion : 784.049\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 3_CONSTANT 1.6648327 1.6499048 1.0090477 0.3145449\n",
+ " 3_RD90 2.5911850 0.5446873 4.7571975 0.0000045\n",
+ " 3_PS90 1.7951113 0.2645028 6.7867381 0.0000000\n",
+ " 3_UE90 0.2831519 0.1896309 1.4931734 0.1374511\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 17.037\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 700.804 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 128.095 0.0000\n",
+ "Koenker-Bassett test 3 23.069 0.0000\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 4\n",
+ "---------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 4_['HR90'] Number of Observations: 157\n",
+ "Mean dependent var : 5.2565 Number of Variables : 4\n",
+ "S.D. dependent var : 7.5670 Degrees of Freedom : 153\n",
+ "R-squared : 0.0718\n",
+ "Adjusted R-squared : 0.0536\n",
+ "Sum squared residual: 8291.273 F-statistic : 3.9445\n",
+ "Sigma-square : 54.191 Prob(F-statistic) : 0.009592\n",
+ "S.E. of regression : 7.361 Log likelihood : -534.160\n",
+ "Sigma-square ML : 52.811 Akaike info criterion : 1076.321\n",
+ "S.E of regression ML: 7.2671 Schwarz criterion : 1088.546\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 4_CONSTANT 6.5333323 2.4673414 2.6479239 0.0089474\n",
+ " 4_RD90 2.7602351 1.0586310 2.6073627 0.0100275\n",
+ " 4_PS90 -0.6252142 0.6065058 -1.0308463 0.3042397\n",
+ " 4_UE90 -0.0983422 0.2825469 -0.3480561 0.7282764\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 9.215\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 10522.321 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 397.444 0.0000\n",
+ "Koenker-Bassett test 3 19.450 0.0002\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 5\n",
+ "---------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 5_['HR90'] Number of Observations: 416\n",
+ "Mean dependent var : 3.5350 Number of Variables : 4\n",
+ "S.D. dependent var : 3.5289 Degrees of Freedom : 412\n",
+ "R-squared : 0.2384\n",
+ "Adjusted R-squared : 0.2328\n",
+ "Sum squared residual: 3936.025 F-statistic : 42.9870\n",
+ "Sigma-square : 9.553 Prob(F-statistic) : 3.458e-24\n",
+ "S.E. of regression : 3.091 Log likelihood : -1057.705\n",
+ "Sigma-square ML : 9.462 Akaike info criterion : 2123.409\n",
+ "S.E of regression ML: 3.0760 Schwarz criterion : 2139.532\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 5_CONSTANT 3.6580644 0.7883611 4.6400874 0.0000047\n",
+ " 5_RD90 2.1705064 0.3732128 5.8157339 0.0000000\n",
+ " 5_PS90 1.6485127 0.2143249 7.6916535 0.0000000\n",
+ " 5_UE90 -0.0049898 0.0843801 -0.0591343 0.9528738\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 11.124\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 2163.820 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 295.778 0.0000\n",
+ "Koenker-Bassett test 3 48.598 0.0000\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 6\n",
+ "---------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 6_['HR90'] Number of Observations: 105\n",
+ "Mean dependent var : 6.9902 Number of Variables : 4\n",
+ "S.D. dependent var : 7.7137 Degrees of Freedom : 101\n",
+ "R-squared : 0.5133\n",
+ "Adjusted R-squared : 0.4989\n",
+ "Sum squared residual: 3011.570 F-statistic : 35.5107\n",
+ "Sigma-square : 29.818 Prob(F-statistic) : 9.373e-16\n",
+ "S.E. of regression : 5.461 Log likelihood : -325.192\n",
+ "Sigma-square ML : 28.682 Akaike info criterion : 658.384\n",
+ "S.E of regression ML: 5.3555 Schwarz criterion : 669.000\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 6_CONSTANT 12.6762323 2.3973782 5.2875396 0.0000007\n",
+ " 6_RD90 7.2357749 0.8959392 8.0761894 0.0000000\n",
+ " 6_PS90 3.0087836 0.5687185 5.2904618 0.0000007\n",
+ " 6_UE90 -0.9087647 0.4285148 -2.1207310 0.0363931\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 10.336\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 1082.543 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 69.868 0.0000\n",
+ "Koenker-Bassett test 3 8.330 0.0397\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 7\n",
+ "---------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 7_['HR90'] Number of Observations: 212\n",
+ "Mean dependent var : 6.7045 Number of Variables : 4\n",
+ "S.D. dependent var : 7.5062 Degrees of Freedom : 208\n",
+ "R-squared : 0.6513\n",
+ "Adjusted R-squared : 0.6463\n",
+ "Sum squared residual: 4145.470 F-statistic : 129.5007\n",
+ "Sigma-square : 19.930 Prob(F-statistic) : 2.429e-47\n",
+ "S.E. of regression : 4.464 Log likelihood : -615.973\n",
+ "Sigma-square ML : 19.554 Akaike info criterion : 1239.945\n",
+ "S.E of regression ML: 4.4220 Schwarz criterion : 1253.372\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 7_CONSTANT 6.8749278 1.4815715 4.6402943 0.0000062\n",
+ " 7_RD90 5.0735729 0.4720012 10.7490683 0.0000000\n",
+ " 7_PS90 4.3257745 0.4290443 10.0823502 0.0000000\n",
+ " 7_UE90 -0.1901823 0.2136345 -0.8902227 0.3743748\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 10.840\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 23.086 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 68.023 0.0000\n",
+ "Koenker-Bassett test 3 50.360 0.0000\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 8\n",
+ "---------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 8_['HR90'] Number of Observations: 142\n",
+ "Mean dependent var : 6.9674 Number of Variables : 4\n",
+ "S.D. dependent var : 7.7639 Degrees of Freedom : 138\n",
+ "R-squared : 0.0816\n",
+ "Adjusted R-squared : 0.0616\n",
+ "Sum squared residual: 7805.895 F-statistic : 4.0858\n",
+ "Sigma-square : 56.564 Prob(F-statistic) : 0.008156\n",
+ "S.E. of regression : 7.521 Log likelihood : -485.973\n",
+ "Sigma-square ML : 54.971 Akaike info criterion : 979.945\n",
+ "S.E of regression ML: 7.4142 Schwarz criterion : 991.769\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 8_CONSTANT 8.9134518 2.2205952 4.0139922 0.0000975\n",
+ " 8_RD90 3.1669956 1.0249618 3.0898670 0.0024224\n",
+ " 8_PS90 0.9219418 0.7333370 1.2571872 0.2108094\n",
+ " 8_UE90 -0.2902235 0.3083686 -0.9411576 0.3482687\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 7.818\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 211.413 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 16.332 0.0010\n",
+ "Koenker-Bassett test 3 4.771 0.1893\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 9\n",
+ "---------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 9_['HR90'] Number of Observations: 494\n",
+ "Mean dependent var : 9.4357 Number of Variables : 4\n",
+ "S.D. dependent var : 6.1868 Degrees of Freedom : 490\n",
+ "R-squared : 0.3161\n",
+ "Adjusted R-squared : 0.3120\n",
+ "Sum squared residual: 12904.325 F-statistic : 75.5098\n",
+ "Sigma-square : 26.335 Prob(F-statistic) : 3.675e-40\n",
+ "S.E. of regression : 5.132 Log likelihood : -1506.863\n",
+ "Sigma-square ML : 26.122 Akaike info criterion : 3021.726\n",
+ "S.E of regression ML: 5.1110 Schwarz criterion : 3038.536\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 9_CONSTANT 10.2257744 0.7060239 14.4836089 0.0000000\n",
+ " 9_RD90 4.9173048 0.3601681 13.6528046 0.0000000\n",
+ " 9_PS90 2.7435413 0.3773269 7.2709932 0.0000000\n",
+ " 9_UE90 -0.5158999 0.1027098 -5.0228862 0.0000007\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 7.112\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 164.804 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 93.891 0.0000\n",
+ "Koenker-Bassett test 3 45.305 0.0000\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 10\n",
+ "----------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 10_['HR90'] Number of Observations: 322\n",
+ "Mean dependent var : 10.9368 Number of Variables : 4\n",
+ "S.D. dependent var : 7.1069 Degrees of Freedom : 318\n",
+ "R-squared : 0.1980\n",
+ "Adjusted R-squared : 0.1904\n",
+ "Sum squared residual: 13003.178 F-statistic : 26.1676\n",
+ "Sigma-square : 40.890 Prob(F-statistic) : 3.738e-15\n",
+ "S.E. of regression : 6.395 Log likelihood : -1052.340\n",
+ "Sigma-square ML : 40.383 Akaike info criterion : 2112.680\n",
+ "S.E of regression ML: 6.3547 Schwarz criterion : 2127.779\n",
+ "\n",
+ "------------------------------------------------------------------------------------\n",
+ " Variable Coefficient Std.Error t-Statistic Probability\n",
+ "------------------------------------------------------------------------------------\n",
+ " 10_CONSTANT 8.9613419 1.1548606 7.7596741 0.0000000\n",
+ " 10_RD90 3.1036861 0.4676112 6.6373221 0.0000000\n",
+ " 10_PS90 2.0054035 0.4775095 4.1997143 0.0000347\n",
+ " 10_UE90 -0.1659300 0.1618652 -1.0251118 0.3060896\n",
+ "------------------------------------------------------------------------------------\n",
+ "Regimes variable: skater_reg\n",
+ "\n",
+ "REGRESSION DIAGNOSTICS\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 8.728\n",
+ "\n",
+ "TEST ON NORMALITY OF ERRORS\n",
+ "TEST DF VALUE PROB\n",
+ "Jarque-Bera 2 805.242 0.0000\n",
+ "\n",
+ "DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
+ "RANDOM COEFFICIENTS\n",
+ "TEST DF VALUE PROB\n",
+ "Breusch-Pagan test 3 271.848 0.0000\n",
+ "Koenker-Bassett test 3 60.502 0.0000\n",
+ "----------\n",
+ "\n",
+ "SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 11\n",
+ "----------------------------------------------------------------\n",
+ "Data set : unknown\n",
+ "Weights matrix : unknown\n",
+ "Dependent Variable : 11_['HR90'] Number of Observations: 191\n",
+ "Mean dependent var : 12.6163 Number of Variables : 4\n",
+ "S.D. dependent var : 6.4910 Degrees of Freedom : 187\n",
+ "R-squared : 0.2010\n",
+ "Adjusted R-squared : 0.1882\n",
+ "Sum squared residual: 6396.303 F-statistic : 15.6792\n",
+ "Sigma-square : 34.205 Prob(F-statistic) : 3.882e-09\n",
+ "S.E. of regression : 5.848 Log likelihood : -606.337\n",
+ "Sigma-square ML : 33.488 Akaike info criterion : 1220.674\n",
+ "S.E of regression ML: 5.7869 Schwarz criterion : 1233.683\n",
"\n",
"------------------------------------------------------------------------------------\n",
" Variable Coefficient Std.Error t-Statistic Probability\n",
"------------------------------------------------------------------------------------\n",
- " 3_CONSTANT -16.2929212 10.1167637 -1.6104875 0.1513267\n",
- " 3_INC 2.3390074 0.4430624 5.2791824 0.0011491\n",
- " 3_CRIME 0.4036596 0.1324784 3.0469845 0.0186623\n",
+ " 11_CONSTANT 10.6523809 1.8667675 5.7063244 0.0000000\n",
+ " 11_RD90 2.8884391 0.5972275 4.8364133 0.0000028\n",
+ " 11_PS90 0.2205890 0.5966193 0.3697316 0.7120008\n",
+ " 11_UE90 -0.0296635 0.3154386 -0.0940388 0.9251790\n",
"------------------------------------------------------------------------------------\n",
"Regimes variable: skater_reg\n",
"\n",
"REGRESSION DIAGNOSTICS\n",
- "MULTICOLLINEARITY CONDITION NUMBER 20.794\n",
+ "MULTICOLLINEARITY CONDITION NUMBER 10.444\n",
"\n",
"TEST ON NORMALITY OF ERRORS\n",
"TEST DF VALUE PROB\n",
- "Jarque-Bera 2 0.655 0.7207\n",
+ "Jarque-Bera 2 16.443 0.0003\n",
"\n",
"DIAGNOSTICS FOR HETEROSKEDASTICITY\n",
"RANDOM COEFFICIENTS\n",
"TEST DF VALUE PROB\n",
- "Breusch-Pagan test 2 0.708 0.7020\n",
- "Koenker-Bassett test 2 1.358 0.5070\n",
+ "Breusch-Pagan test 3 18.499 0.0003\n",
+ "Koenker-Bassett test 3 11.542 0.0091\n",
"\n",
"REGIMES DIAGNOSTICS - CHOW TEST\n",
" VARIABLE DF VALUE PROB\n",
- " CONSTANT 3 20.123 0.0002\n",
- " CRIME 3 26.940 0.0000\n",
- " INC 3 4.537 0.2090\n",
- " Global test 9 36.811 0.0000\n",
+ " CONSTANT 11 110.297 0.0000\n",
+ " PS90 11 95.473 0.0000\n",
+ " RD90 11 75.733 0.0000\n",
+ " UE90 11 52.373 0.0000\n",
+ " Global test 44 532.110 0.0000\n",
"================================ END OF REPORT =====================================\n"
]
}
],
"source": [
"reg = spreg.OLS_Regimes(y,x,\n",
- " regimes=results.current_labels_, w=w, name_y=['HOVAL'], name_x=['INC','CRIME'], name_regimes='skater_reg')\n",
+ " regimes=results._trace[11][0], w=w, name_y=['HR90'], name_x=['RD90','PS90','UE90'], name_regimes='skater_reg')\n",
"print(reg.summary)"
]
},
{
"cell_type": "code",
"execution_count": null,
+ "id": "887b4d0d",
"metadata": {},
"outputs": [],
"source": []
@@ -43197,9 +694,9 @@
],
"metadata": {
"kernelspec": {
- "display_name": "Analysis",
+ "display_name": "Python [conda env:myenv] *",
"language": "python",
- "name": "analysis"
+ "name": "conda-env-myenv-py"
},
"language_info": {
"codemirror_mode": {
@@ -43211,7 +708,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.4"
+ "version": "3.8.15"
}
},
"nbformat": 4,
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 00000000..8fadf3f5
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,105 @@
+[build-system]
+requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2"]
+build-backend = "setuptools.build_meta"
+
+[tool.setuptools_scm]
+
+[project]
+name = "spreg"
+dynamic = ["version"]
+authors = [
+ { name = "Luc Anselin", email = "anselin@uchicago.edu" },
+ { name = "Serge Rey", email = "sjsrey@gmail.com" },
+ { name = "Pedo Amaral", email = "pedrovma@gmail.com" },
+]
+maintainers = [{ name = "pysal contributors" }]
+license = { text = "BSD 3-Clause" }
+description = "PySAL Spatial Econometric Regression in Python"
+keywords = [
+ "spatial econometrics, regression, statistics, spatial modeling"
+]
+readme = { text = """\
+Spatial Econometric Regression in Python"
+
+""", content-type = "text/x-rst" }
+classifiers = [
+ "Programming Language :: Python :: 3",
+ "License :: OSI Approved :: BSD License",
+ "Operating System :: OS Independent",
+ "Intended Audience :: Science/Research",
+ "Topic :: Scientific/Engineering :: GIS",
+]
+requires-python = ">=3.8"
+dependencies = [
+"scipy>=0.11",
+"numpy>=1.23",
+"pandas",
+"libpysal>=4.0.0",
+"scikit-learn>=0.22",
+]
+
+[project.urls]
+Home = "https://github.com/pysal/spreg/"
+Repository = "https://github.com/pysal/spreg"
+
+[project.optional-dependencies]
+dev = ["pre-commit"]
+docs = [
+ "nbsphinx",
+ "numpydoc",
+ "pandoc",
+ "sphinx",
+ "sphinxcontrib-bibtex",
+ "sphinx_bootstrap_theme",
+ "mkdocs-jupyter",
+ "myst-parser"
+]
+tests = [
+ "codecov",
+ "coverage",
+ "pytest",
+ "pytest-mpl",
+ "pytest-cov",
+ "watermark",
+
+]
+
+[tool.setuptools.packages.find]
+include = ["spreg", "spreg.*"]
+
+[tool.black]
+line-length = 88
+
+[tool.ruff]
+line-length = 88
+select = ["E", "F", "W", "I", "UP", "N", "B", "A", "C4", "SIM", "ARG"]
+target-version = "py39"
+ignore = [
+ "B006",
+ "B008",
+ "B009",
+ "B010",
+ "C408",
+ "E731",
+ "F401",
+ "F403",
+ "N803",
+ "N806",
+ "N999",
+ "UP007"
+]
+exclude = ["spreg/tests/*", "docs/*"]
+
+[tool.coverage.run]
+source = ["./spreg"]
+
+[tool.coverage.report]
+exclude_lines = [
+ "if self.debug:",
+ "pragma: no cover",
+ "raise NotImplementedError",
+ "except ModuleNotFoundError:",
+ "except ImportError",
+]
+ignore_errors = true
+omit = ["spreg/tests/*", "docs/conf.py"]
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index d8a091d6..00000000
--- a/requirements.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-scipy>=0.11
-numpy>=1.3
-pandas
-libpysal>=4.0.0
-scikit-learn>=0.22
diff --git a/requirements_docs.txt b/requirements_docs.txt
deleted file mode 100644
index 8e82663f..00000000
--- a/requirements_docs.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-sphinx>=1.4.3
-sphinxcontrib-bibtex
-sphinx_bootstrap_theme>=0.7.0
-numpydoc
-nbsphinx
\ No newline at end of file
diff --git a/requirements_plus.txt b/requirements_plus.txt
deleted file mode 100644
index ac1e32bc..00000000
--- a/requirements_plus.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-matplotlib>=1.5.1
-seaborn>=0.7.0
-geopandas>=0.2
-bokeh>=0.11.1
-geojson>=1.3.2
-folium>=0.2.1
-mplleaflet>=0.0.5
-statsmodels>=0.6.1
-numba
-numexpr
-watermark
diff --git a/requirements_tests.txt b/requirements_tests.txt
deleted file mode 100644
index 7c8c886f..00000000
--- a/requirements_tests.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-codecov
-coverage
-pytest
-pytest-cov
-pytest-xdist
-twine
-versioneer
-wheel
diff --git a/setup.cfg b/setup.cfg
deleted file mode 100644
index 8a4775e3..00000000
--- a/setup.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-[versioneer]
-VCS = git
-style = pep440
-versionfile_source = spreg/_version.py
-versionfile_build = spreg/_version.py
-tag_prefix = v
-parentdir_prefix = spreg-
-
-[flake8]
-max_line_length = 88
-exclude = *__init__.py, docs/conf.py, versioneer.py, spreg/_version.py
-ignore =
- E741,
- F403,
- F405,
- W503
-
-[black]
-line-length = 88
-
-[isort]
-profile = black
diff --git a/setup.py b/setup.py
deleted file mode 100644
index 7bedc601..00000000
--- a/setup.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# coding: utf-8
-from distutils.command.build_py import build_py
-from setuptools import setup
-import versioneer
-
-package = "spreg"
-
-with open("README.md", encoding="utf8") as file:
- long_description = file.read()
-
-
-def _get_requirements_from_files(groups_files):
- groups_reqlist = {}
-
- for k, v in groups_files.items():
- with open(v, "r") as f:
- pkg_list = f.read().splitlines()
- groups_reqlist[k] = pkg_list
-
- return groups_reqlist
-
-
-def setup_package():
- # get all file endings and copy whole file names without a file suffix
- # assumes nested directories are only down one level
- _groups_files = {
- "base": "requirements.txt",
- "tests": "requirements_tests.txt",
- "plus": "requirements_plus.txt",
- "docs": "requirements_docs.txt",
- }
-
- reqs = _get_requirements_from_files(_groups_files)
- install_reqs = reqs.pop("base")
- extras_reqs = reqs
-
- setup(
- name=package,
- version=versioneer.get_version(),
- description="PySAL Spatial Econometrics Package",
- long_description=long_description,
- long_description_content_type="text/markdown",
- maintainer="PySAL Developers",
- maintainer_email="pysal-dev@googlegroups.com",
- url=f"https://github.com/pysal/{package}",
- download_url=f"https://pypi.python.org/pypi/{package}",
- license="BSD",
- py_modules=[package],
- packages=[package],
- keywords="spatial statistics",
- classifiers=[
- "Development Status :: 5 - Production/Stable",
- "Intended Audience :: Science/Research",
- "Intended Audience :: Developers",
- "Intended Audience :: Education",
- "Topic :: Scientific/Engineering",
- "Topic :: Scientific/Engineering :: GIS",
- "License :: OSI Approved :: BSD License",
- "Programming Language :: Python",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- "Programming Language :: Python :: 3.10",
- ],
- install_requires=install_reqs,
- extras_require=extras_reqs,
- cmdclass=versioneer.get_cmdclass({"build_py": build_py}),
- )
-
-
-if __name__ == "__main__":
- setup_package()
diff --git a/spreg/__init__.py b/spreg/__init__.py
index 2e7e01f8..845e95e8 100644
--- a/spreg/__init__.py
+++ b/spreg/__init__.py
@@ -1,38 +1,41 @@
-from .ols import *
+
+import contextlib
+from importlib.metadata import PackageNotFoundError, version
+
from .diagnostics import *
from .diagnostics_panel import *
from .diagnostics_sp import *
from .diagnostics_sur import *
from .diagnostics_tsls import *
-from .user_output import *
-from .twosls import *
-from .twosls_sp import *
from .error_sp import *
from .error_sp_het import *
-from .error_sp_hom import *
-from .ols_regimes import *
-from .twosls_regimes import *
-from .twosls_sp_regimes import *
-from .error_sp_regimes import *
from .error_sp_het_regimes import *
+from .error_sp_hom import *
from .error_sp_hom_regimes import *
-from .probit import *
-from .ml_lag import *
-from .ml_lag_regimes import *
+from .error_sp_regimes import *
from .ml_error import *
from .ml_error_regimes import *
+from .ml_lag import *
+from .ml_lag_regimes import *
+from .ols import *
+from .ols_regimes import *
+from .panel_fe import *
+from .panel_re import *
+from .probit import *
+from .regimes import *
+from .skater_reg import *
+from .sp_panels import *
+from .sputils import *
from .sur import *
from .sur_error import *
from .sur_lag import *
from .sur_utils import *
+from .twosls import *
+from .twosls_regimes import *
+from .twosls_sp import *
+from .twosls_sp_regimes import *
+from .user_output import *
from .utils import *
-from .regimes import *
-from .sputils import *
-from .sp_panels import *
-from .panel_fe import *
-from .panel_re import *
-from .skater_reg import *
-
-from . import _version
-__version__ = _version.get_versions()["version"]
+with contextlib.suppress(PackageNotFoundError):
+ __version__ = version("spreg")
diff --git a/spreg/_version.py b/spreg/_version.py
deleted file mode 100644
index db0ad52e..00000000
--- a/spreg/_version.py
+++ /dev/null
@@ -1,686 +0,0 @@
-# This file helps to compute a version number in source trees obtained from
-# git-archive tarball (such as those provided by githubs download-from-tag
-# feature). Distribution tarballs (built by setup.py sdist) and build
-# directories (produced by setup.py build) will contain a much shorter file
-# that just contains the computed version number.
-
-# This file is released into the public domain. Generated by
-# versioneer-0.22 (https://github.com/python-versioneer/python-versioneer)
-
-"""Git implementation of _version.py."""
-
-import errno
-import os
-import re
-import subprocess
-import sys
-from typing import Callable, Dict
-import functools
-
-
-def get_keywords():
- """Get the keywords needed to look up the version information."""
- # these strings will be replaced by git during git-archive.
- # setup.py/versioneer.py will grep for the variable names, so they must
- # each be defined on a line of their own. _version.py will just call
- # get_keywords().
- git_refnames = "$Format:%d$"
- git_full = "$Format:%H$"
- git_date = "$Format:%ci$"
- keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
- return keywords
-
-
-class VersioneerConfig:
- """Container for Versioneer configuration parameters."""
-
-
-def get_config():
- """Create, populate and return the VersioneerConfig() object."""
- # these strings are filled in when 'setup.py versioneer' creates
- # _version.py
- cfg = VersioneerConfig()
- cfg.VCS = "git"
- cfg.style = "pep440"
- cfg.tag_prefix = "v"
- cfg.parentdir_prefix = "spreg-"
- cfg.versionfile_source = "spreg/_version.py"
- cfg.verbose = False
- return cfg
-
-
-class NotThisMethod(Exception):
- """Exception raised if a method is not valid for the current scenario."""
-
-
-LONG_VERSION_PY: Dict[str, str] = {}
-HANDLERS: Dict[str, Dict[str, Callable]] = {}
-
-
-def register_vcs_handler(vcs, method): # decorator
- """Create decorator to mark a method as the handler of a VCS."""
-
- def decorate(f):
- """Store f in HANDLERS[vcs][method]."""
- if vcs not in HANDLERS:
- HANDLERS[vcs] = {}
- HANDLERS[vcs][method] = f
- return f
-
- return decorate
-
-
-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None):
- """Call the given command(s)."""
- assert isinstance(commands, list)
- process = None
-
- popen_kwargs = {}
- if sys.platform == "win32":
- # This hides the console window if pythonw.exe is used
- startupinfo = subprocess.STARTUPINFO()
- startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
- popen_kwargs["startupinfo"] = startupinfo
-
- for command in commands:
- try:
- dispcmd = str([command] + args)
- # remember shell=False, so use git.cmd on windows, not just git
- process = subprocess.Popen(
- [command] + args,
- cwd=cwd,
- env=env,
- stdout=subprocess.PIPE,
- stderr=(subprocess.PIPE if hide_stderr else None),
- **popen_kwargs
- )
- break
- except OSError:
- e = sys.exc_info()[1]
- if e.errno == errno.ENOENT:
- continue
- if verbose:
- print("unable to run %s" % dispcmd)
- print(e)
- return None, None
- else:
- if verbose:
- print("unable to find command, tried %s" % (commands,))
- return None, None
- stdout = process.communicate()[0].strip().decode()
- if process.returncode != 0:
- if verbose:
- print("unable to run %s (error)" % dispcmd)
- print("stdout was %s" % stdout)
- return None, process.returncode
- return stdout, process.returncode
-
-
-def versions_from_parentdir(parentdir_prefix, root, verbose):
- """Try to determine the version from the parent directory name.
-
- Source tarballs conventionally unpack into a directory that includes both
- the project name and a version string. We will also support searching up
- two directory levels for an appropriately named parent directory
- """
- rootdirs = []
-
- for _ in range(3):
- dirname = os.path.basename(root)
- if dirname.startswith(parentdir_prefix):
- return {
- "version": dirname[len(parentdir_prefix) :],
- "full-revisionid": None,
- "dirty": False,
- "error": None,
- "date": None,
- }
- rootdirs.append(root)
- root = os.path.dirname(root) # up a level
-
- if verbose:
- print(
- "Tried directories %s but none started with prefix %s"
- % (str(rootdirs), parentdir_prefix)
- )
- raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
-
-
-@register_vcs_handler("git", "get_keywords")
-def git_get_keywords(versionfile_abs):
- """Extract version information from the given file."""
- # the code embedded in _version.py can just fetch the value of these
- # keywords. When used from setup.py, we don't want to import _version.py,
- # so we do it with a regexp instead. This function is not used from
- # _version.py.
- keywords = {}
- try:
- with open(versionfile_abs, "r") as fobj:
- for line in fobj:
- if line.strip().startswith("git_refnames ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["refnames"] = mo.group(1)
- if line.strip().startswith("git_full ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["full"] = mo.group(1)
- if line.strip().startswith("git_date ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["date"] = mo.group(1)
- except OSError:
- pass
- return keywords
-
-
-@register_vcs_handler("git", "keywords")
-def git_versions_from_keywords(keywords, tag_prefix, verbose):
- """Get version information from git keywords."""
- if "refnames" not in keywords:
- raise NotThisMethod("Short version file found")
- date = keywords.get("date")
- if date is not None:
- # Use only the last line. Previous lines may contain GPG signature
- # information.
- date = date.splitlines()[-1]
-
- # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
- # datestamp. However we prefer "%ci" (which expands to an "ISO-8601
- # -like" string, which we must then edit to make compliant), because
- # it's been around since git-1.5.3, and it's too difficult to
- # discover which version we're using, or to work around using an
- # older one.
- date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
- refnames = keywords["refnames"].strip()
- if refnames.startswith("$Format"):
- if verbose:
- print("keywords are unexpanded, not using")
- raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
- refs = {r.strip() for r in refnames.strip("()").split(",")}
- # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
- # just "foo-1.0". If we see a "tag: " prefix, prefer those.
- TAG = "tag: "
- tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)}
- if not tags:
- # Either we're using git < 1.8.3, or there really are no tags. We use
- # a heuristic: assume all version tags have a digit. The old git %d
- # expansion behaves like git log --decorate=short and strips out the
- # refs/heads/ and refs/tags/ prefixes that would let us distinguish
- # between branches and tags. By ignoring refnames without digits, we
- # filter out many common branch names like "release" and
- # "stabilization", as well as "HEAD" and "master".
- tags = {r for r in refs if re.search(r"\d", r)}
- if verbose:
- print("discarding '%s', no digits" % ",".join(refs - tags))
- if verbose:
- print("likely tags: %s" % ",".join(sorted(tags)))
- for ref in sorted(tags):
- # sorting will prefer e.g. "2.0" over "2.0rc1"
- if ref.startswith(tag_prefix):
- r = ref[len(tag_prefix) :]
- # Filter out refs that exactly match prefix or that don't start
- # with a number once the prefix is stripped (mostly a concern
- # when prefix is '')
- if not re.match(r"\d", r):
- continue
- if verbose:
- print("picking %s" % r)
- return {
- "version": r,
- "full-revisionid": keywords["full"].strip(),
- "dirty": False,
- "error": None,
- "date": date,
- }
- # no suitable tags, so version is "0+unknown", but full hex is still there
- if verbose:
- print("no suitable tags, using unknown + full revision id")
- return {
- "version": "0+unknown",
- "full-revisionid": keywords["full"].strip(),
- "dirty": False,
- "error": "no suitable tags",
- "date": None,
- }
-
-
-@register_vcs_handler("git", "pieces_from_vcs")
-def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
- """Get version from 'git describe' in the root of the source tree.
-
- This only gets called if the git-archive 'subst' keywords were *not*
- expanded, and _version.py hasn't already been rewritten with a short
- version string, meaning we're inside a checked out source tree.
- """
- GITS = ["git"]
- if sys.platform == "win32":
- GITS = ["git.cmd", "git.exe"]
-
- # GIT_DIR can interfere with correct operation of Versioneer.
- # It may be intended to be passed to the Versioneer-versioned project,
- # but that should not change where we get our version from.
- env = os.environ.copy()
- env.pop("GIT_DIR", None)
- runner = functools.partial(runner, env=env)
-
- _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True)
- if rc != 0:
- if verbose:
- print("Directory %s not under git control" % root)
- raise NotThisMethod("'git rev-parse --git-dir' returned error")
-
- MATCH_ARGS = ["--match", "%s*" % tag_prefix] if tag_prefix else []
-
- # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
- # if there isn't one, this yields HEX[-dirty] (no NUM)
- describe_out, rc = runner(
- GITS,
- ["describe", "--tags", "--dirty", "--always", "--long", *MATCH_ARGS],
- cwd=root,
- )
- # --long was added in git-1.5.5
- if describe_out is None:
- raise NotThisMethod("'git describe' failed")
- describe_out = describe_out.strip()
- full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
- if full_out is None:
- raise NotThisMethod("'git rev-parse' failed")
- full_out = full_out.strip()
-
- pieces = {}
- pieces["long"] = full_out
- pieces["short"] = full_out[:7] # maybe improved later
- pieces["error"] = None
-
- branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root)
- # --abbrev-ref was added in git-1.6.3
- if rc != 0 or branch_name is None:
- raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
- branch_name = branch_name.strip()
-
- if branch_name == "HEAD":
- # If we aren't exactly on a branch, pick a branch which represents
- # the current commit. If all else fails, we are on a branchless
- # commit.
- branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
- # --contains was added in git-1.5.4
- if rc != 0 or branches is None:
- raise NotThisMethod("'git branch --contains' returned error")
- branches = branches.split("\n")
-
- # Remove the first line if we're running detached
- if "(" in branches[0]:
- branches.pop(0)
-
- # Strip off the leading "* " from the list of branches.
- branches = [branch[2:] for branch in branches]
- if "master" in branches:
- branch_name = "master"
- elif not branches:
- branch_name = None
- else:
- # Pick the first branch that is returned. Good or bad.
- branch_name = branches[0]
-
- pieces["branch"] = branch_name
-
- # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
- # TAG might have hyphens.
- git_describe = describe_out
-
- # look for -dirty suffix
- dirty = git_describe.endswith("-dirty")
- pieces["dirty"] = dirty
- if dirty:
- git_describe = git_describe[: git_describe.rindex("-dirty")]
-
- # now we have TAG-NUM-gHEX or HEX
-
- if "-" in git_describe:
- # TAG-NUM-gHEX
- mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe)
- if not mo:
- # unparsable. Maybe git-describe is misbehaving?
- pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out
- return pieces
-
- # tag
- full_tag = mo.group(1)
- if not full_tag.startswith(tag_prefix):
- if verbose:
- fmt = "tag '%s' doesn't start with prefix '%s'"
- print(fmt % (full_tag, tag_prefix))
- pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % (
- full_tag,
- tag_prefix,
- )
- return pieces
- pieces["closest-tag"] = full_tag[len(tag_prefix) :]
-
- # distance: number of commits since tag
- pieces["distance"] = int(mo.group(2))
-
- # commit: short hex revision ID
- pieces["short"] = mo.group(3)
-
- else:
- # HEX: no tags
- pieces["closest-tag"] = None
- count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
- pieces["distance"] = int(count_out) # total number of commits
-
- # commit date: see ISO-8601 comment in git_versions_from_keywords()
- date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
- # Use only the last line. Previous lines may contain GPG signature
- # information.
- date = date.splitlines()[-1]
- pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
-
- return pieces
-
-
-def plus_or_dot(pieces):
- """Return a + if we don't already have one, else return a ."""
- if "+" in pieces.get("closest-tag", ""):
- return "."
- return "+"
-
-
-def render_pep440(pieces):
- """Build up version string, with post-release "local version identifier".
-
- Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
- get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty
-
- Exceptions:
- 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += plus_or_dot(pieces)
- rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def render_pep440_branch(pieces):
- """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
-
- The ".dev0" means not master branch. Note that .dev0 sorts backwards
- (a feature branch will appear "older" than the master branch).
-
- Exceptions:
- 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0"
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def pep440_split_post(ver):
- """Split pep440 version string at the post-release segment.
-
- Returns the release segments before the post-release and the
- post-release version number (or -1 if no post-release segment is present).
- """
- vc = str.split(ver, ".post")
- return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
-
-
-def render_pep440_pre(pieces):
- """TAG[.postN.devDISTANCE] -- No -dirty.
-
- Exceptions:
- 1: no tags. 0.post0.devDISTANCE
- """
- if pieces["closest-tag"]:
- if pieces["distance"]:
- # update the post release segment
- tag_version, post_version = pep440_split_post(pieces["closest-tag"])
- rendered = tag_version
- if post_version is not None:
- rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"])
- else:
- rendered += ".post0.dev%d" % (pieces["distance"])
- else:
- # no commits, use the tag as the version
- rendered = pieces["closest-tag"]
- else:
- # exception #1
- rendered = "0.post0.dev%d" % pieces["distance"]
- return rendered
-
-
-def render_pep440_post(pieces):
- """TAG[.postDISTANCE[.dev0]+gHEX] .
-
- The ".dev0" means dirty. Note that .dev0 sorts backwards
- (a dirty tree will appear "older" than the corresponding clean one),
- but you shouldn't be releasing software with -dirty anyways.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "g%s" % pieces["short"]
- else:
- # exception #1
- rendered = "0.post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- rendered += "+g%s" % pieces["short"]
- return rendered
-
-
-def render_pep440_post_branch(pieces):
- """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
-
- The ".dev0" means not master branch.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%d" % pieces["distance"]
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "g%s" % pieces["short"]
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0.post%d" % pieces["distance"]
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += "+g%s" % pieces["short"]
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def render_pep440_old(pieces):
- """TAG[.postDISTANCE[.dev0]] .
-
- The ".dev0" means dirty.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- else:
- # exception #1
- rendered = "0.post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- return rendered
-
-
-def render_git_describe(pieces):
- """TAG[-DISTANCE-gHEX][-dirty].
-
- Like 'git describe --tags --dirty --always'.
-
- Exceptions:
- 1: no tags. HEX[-dirty] (note: no 'g' prefix)
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"]:
- rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
- else:
- # exception #1
- rendered = pieces["short"]
- if pieces["dirty"]:
- rendered += "-dirty"
- return rendered
-
-
-def render_git_describe_long(pieces):
- """TAG-DISTANCE-gHEX[-dirty].
-
- Like 'git describe --tags --dirty --always -long'.
- The distance/hash is unconditional.
-
- Exceptions:
- 1: no tags. HEX[-dirty] (note: no 'g' prefix)
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
- else:
- # exception #1
- rendered = pieces["short"]
- if pieces["dirty"]:
- rendered += "-dirty"
- return rendered
-
-
-def render(pieces, style):
- """Render the given version pieces into the requested style."""
- if pieces["error"]:
- return {
- "version": "unknown",
- "full-revisionid": pieces.get("long"),
- "dirty": None,
- "error": pieces["error"],
- "date": None,
- }
-
- if not style or style == "default":
- style = "pep440" # the default
-
- if style == "pep440":
- rendered = render_pep440(pieces)
- elif style == "pep440-branch":
- rendered = render_pep440_branch(pieces)
- elif style == "pep440-pre":
- rendered = render_pep440_pre(pieces)
- elif style == "pep440-post":
- rendered = render_pep440_post(pieces)
- elif style == "pep440-post-branch":
- rendered = render_pep440_post_branch(pieces)
- elif style == "pep440-old":
- rendered = render_pep440_old(pieces)
- elif style == "git-describe":
- rendered = render_git_describe(pieces)
- elif style == "git-describe-long":
- rendered = render_git_describe_long(pieces)
- else:
- raise ValueError("unknown style '%s'" % style)
-
- return {
- "version": rendered,
- "full-revisionid": pieces["long"],
- "dirty": pieces["dirty"],
- "error": None,
- "date": pieces.get("date"),
- }
-
-
-def get_versions():
- """Get version information or return default if unable to do so."""
- # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have
- # __file__, we can work backwards from there to the root. Some
- # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which
- # case we can only use expanded keywords.
-
- cfg = get_config()
- verbose = cfg.verbose
-
- try:
- return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, verbose)
- except NotThisMethod:
- pass
-
- try:
- root = os.path.realpath(__file__)
- # versionfile_source is the relative path from the top of the source
- # tree (where the .git directory might live) to this file. Invert
- # this to find the root from __file__.
- for _ in cfg.versionfile_source.split("/"):
- root = os.path.dirname(root)
- except NameError:
- return {
- "version": "0+unknown",
- "full-revisionid": None,
- "dirty": None,
- "error": "unable to find root of source tree",
- "date": None,
- }
-
- try:
- pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
- return render(pieces, cfg.style)
- except NotThisMethod:
- pass
-
- try:
- if cfg.parentdir_prefix:
- return versions_from_parentdir(cfg.parentdir_prefix, root, verbose)
- except NotThisMethod:
- pass
-
- return {
- "version": "0+unknown",
- "full-revisionid": None,
- "dirty": None,
- "error": "unable to compute version",
- "date": None,
- }
diff --git a/spreg/diagnostics_panel.py b/spreg/diagnostics_panel.py
index 730135cc..5b299d34 100644
--- a/spreg/diagnostics_panel.py
+++ b/spreg/diagnostics_panel.py
@@ -10,7 +10,7 @@
import numpy.linalg as la
from scipy import sparse as sp
from . import user_output as USER
-from . import OLS
+from .ols import OLS
from .utils import spdot
from scipy import stats
from .panel_utils import check_panel
diff --git a/spreg/diagnostics_sp.py b/spreg/diagnostics_sp.py
index a3aaeaac..bf0dbfe7 100644
--- a/spreg/diagnostics_sp.py
+++ b/spreg/diagnostics_sp.py
@@ -18,7 +18,6 @@
class LMtests:
-
"""
Lagrange Multiplier tests. Implemented as presented in :cite:`Anselin1996a`
@@ -142,7 +141,6 @@ def __init__(self, ols, w, tests=["all"]):
class MoranRes:
-
"""
Moran's I for spatial autocorrelation in residuals from OLS regression
@@ -396,7 +394,6 @@ def __init__(self, iv, w, case="nosp"):
class spDcache:
-
"""
Helper class to compute reusable pieces in the spatial diagnostics module
...
@@ -669,7 +666,7 @@ def get_vI(ols, w, ei, spDcache):
B = spDcache.AB[1]
trB = np.sum(B.diagonal()) * 4.0
vi = (w.n ** 2 / (w.s0 ** 2 * (w.n - ols.k) * (w.n - ols.k + 2.0))) * (
- w.s1 + 2.0 * trA2 - trB - ((2.0 * (spDcache.trA ** 2)) / (w.n - ols.k))
+ w.s1 + 2.0 * trA2 - trB - ((2.0 * (spDcache.trA ** 2)) / (w.n - ols.k))
)
return vi
@@ -716,9 +713,6 @@ def akTest(iv, w, spDcache):
p : float
P-value of the test
- ToDo:
- * Code in as Nancy
- * Compare both
"""
mi = get_mI(iv, w, spDcache)
# Phi2
@@ -731,6 +725,42 @@ def akTest(iv, w, spDcache):
return (mi, ak[0][0], pval[0][0])
+def comfac_test(lambd, beta, gamma, vm):
+ """
+ Computes the Spatial Common Factor Hypothesis test as shown in Anselin (1988, p. 226-229)
+
+ Parameters
+ ----------
+
+ lambd : float
+ Spatial autoregressive coefficient (as in lambd*Wy)
+ beta : array
+ Coefficients of the exogenous (not spatially lagged) variables, without the constant (as in X*beta)
+ gamma : array
+ coefficients of the spatially lagged exogenous variables (as in WX*gamma)
+ vm : array
+ Variance-covariance matrix of the coefficients
+ Obs. Needs to match the order of theta' = [beta', gamma', lambda]
+
+ Returns
+ -------
+ W : float
+ Wald statistic
+ pvalue : float
+ P value for Wald statistic calculated as a Chi sq. distribution
+ with k-1 degrees of freedom
+
+ """
+ g = lambd * beta + gamma
+ G = np.vstack((lambd * np.eye(beta.shape[0]), np.eye(beta.shape[0]), beta.T))
+
+ GVGi = la.inv(np.dot(G.T, np.dot(vm, G)))
+ W = np.dot(g.T, np.dot(GVGi, g))[0][0]
+ df = G.shape[1]
+ pvalue = chisqprob(W, df)
+ return W, pvalue
+
+
def _test():
import doctest
diff --git a/spreg/diagnostics_sur.py b/spreg/diagnostics_sur.py
index 8e145b54..7fdfdb1d 100644
--- a/spreg/diagnostics_sur.py
+++ b/spreg/diagnostics_sur.py
@@ -221,7 +221,7 @@ def surLMlag(n_eq, WS, bigy, bigX, bigE, bigYP, sig, varb):
"""
# Score
- Y = np.hstack((bigy[r]) for r in range(n_eq))
+ Y = np.hstack([bigy[r] for r in range(n_eq)])
WY = WS * Y
EWY = np.dot(bigE.T, WY)
sigi = la.inv(sig)
diff --git a/spreg/error_sp.py b/spreg/error_sp.py
index 5fe47e00..765fddc8 100644
--- a/spreg/error_sp.py
+++ b/spreg/error_sp.py
@@ -9,23 +9,16 @@
import numpy as np
from numpy import linalg as la
from . import ols as OLS
-from libpysal.weights.spatial_lag import lag_spatial
-from .utils import power_expansion, set_endog, iter_msg, sp_att
-from .utils import (
- get_A1_hom,
- get_A2_hom,
- get_A1_het,
- optim_moments,
- get_spFilter,
- get_lags,
- _moments2eqs,
-)
-from .utils import spdot, RegressionPropsY, set_warn
+from .utils import set_endog, sp_att, optim_moments, get_spFilter, get_lags, spdot, RegressionPropsY, set_warn
from . import twosls as TSLS
from . import user_output as USER
-from . import summary_output as SUMMARY
+import pandas as pd
+from .output import output, _spat_pseudo_r2
+from .error_sp_het import GM_Error_Het, GM_Endog_Error_Het, GM_Combo_Het
+from .error_sp_hom import GM_Error_Hom, GM_Endog_Error_Hom, GM_Combo_Hom
-__all__ = ["GM_Error", "GM_Endog_Error", "GM_Combo"]
+
+__all__ = ["GMM_Error", "GM_Error", "GM_Endog_Error", "GM_Combo"]
class BaseGM_Error(RegressionPropsY):
@@ -138,6 +131,9 @@ class GM_Error(BaseGM_Error):
independent (exogenous) variable, excluding the constant
w : pysal W object
Spatial weights object (always needed)
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
vm : boolean
If True, include variance-covariance matrix in summary
results
@@ -149,9 +145,13 @@ class GM_Error(BaseGM_Error):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -287,7 +287,7 @@ class GM_Error(BaseGM_Error):
"""
def __init__(
- self, y, x, w, vm=False, name_y=None, name_x=None, name_w=None, name_ds=None
+ self, y, x, w, slx_lags=0, vm=False, name_y=None, name_x=None, name_w=None, name_ds=None, latex=False
):
n = USER.check_arrays(y, x)
@@ -295,14 +295,24 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+
+ self.title = "GM SPATIALLY WEIGHTED LEAST SQUARES"
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
+
BaseGM_Error.__init__(self, y=y, x=x_constant, w=w.sparse)
- self.title = "SPATIALLY WEIGHTED LEAST SQUARES"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
self.name_x.append("lambda")
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Error(reg=self, w=w, vm=vm)
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x) - 1) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class BaseGM_Endog_Error(RegressionPropsY):
@@ -379,7 +389,7 @@ class BaseGM_Endog_Error(RegressionPropsY):
>>> w.transform='r'
>>> model = spreg.error_sp.BaseGM_Endog_Error(y, x, yend, q, w=w.sparse)
>>> np.around(model.betas, decimals=4)
- array([[82.573 ],
+ array([[82.5723],
[ 0.581 ],
[-1.4481],
[ 0.3499]])
@@ -438,6 +448,9 @@ class GM_Endog_Error(BaseGM_Endog_Error):
this should not contain any variables from x)
w : pysal W object
Spatial weights object (always needed)
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
vm : boolean
If True, include variance-covariance matrix in summary
results
@@ -453,9 +466,13 @@ class GM_Endog_Error(BaseGM_Endog_Error):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -603,12 +620,12 @@ class GM_Endog_Error(BaseGM_Endog_Error):
>>> print(model.name_z)
['CONSTANT', 'inc', 'hoval', 'lambda']
>>> np.around(model.betas, decimals=4)
- array([[82.573 ],
+ array([[82.5723],
[ 0.581 ],
[-1.4481],
[ 0.3499]])
>>> np.around(model.std_err, decimals=4)
- array([16.1381, 1.3545, 0.7862])
+ array([16.1382, 1.3545, 0.7862])
"""
@@ -619,6 +636,7 @@ def __init__(
yend,
q,
w,
+ slx_lags=0,
vm=False,
name_y=None,
name_x=None,
@@ -626,6 +644,7 @@ def __init__(
name_q=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -633,8 +652,13 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+ self.title = "GM SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES"
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
BaseGM_Endog_Error.__init__(self, y=y, x=x_constant, w=w.sparse, yend=yend, q=q)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
@@ -644,137 +668,14 @@ def __init__(
self.name_q = USER.set_name_q(name_q, q)
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Endog_Error(reg=self, w=w, vm=vm)
-
-
-class BaseGM_Combo(BaseGM_Endog_Error):
-
- """
- GMM method for a spatial lag and error model, with endogenous variables
- (note: no consistency checks, diagnostics or constant added); based on
- Kelejian and Prucha (1998, 1999) :cite:`Kelejian1998` :cite:`Kelejian1999`.
-
- Parameters
- ----------
- y : array
- nx1 array for dependent variable
- x : array
- Two dimensional array with n rows and one column for each
- independent (exogenous) variable, excluding the constant
- yend : array
- Two dimensional array with n rows and one column for each
- endogenous variable
- q : array
- Two dimensional array with n rows and one column for each
- external exogenous variable to use as instruments (note:
- this should not contain any variables from x)
- w : Sparse matrix
- Spatial weights sparse matrix
- w_lags : integer
- Orders of W to include as instruments for the spatially
- lagged dependent variable. For example, w_lags=1, then
- instruments are WX; if w_lags=2, then WX, WWX; and so on.
- lag_q : boolean
- If True, then include spatial lags of the additional
- instruments (q).
-
- Attributes
- ----------
- betas : array
- kx1 array of estimated coefficients
- u : array
- nx1 array of residuals
- e_filtered : array
- nx1 array of spatially filtered residuals
- predy : array
- nx1 array of predicted y values
- n : integer
- Number of observations
- k : integer
- Number of variables for which coefficients are estimated
- (including the constant)
- y : array
- nx1 array for dependent variable
- x : array
- Two dimensional array with n rows and one column for each
- independent (exogenous) variable, including the constant
- yend : array
- Two dimensional array with n rows and one column for each
- endogenous variable
- z : array
- nxk array of variables (combination of x and yend)
- mean_y : float
- Mean of dependent variable
- std_y : float
- Standard deviation of dependent variable
- vm : array
- Variance covariance matrix (kxk)
- sig2 : float
- Sigma squared used in computations
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * len(self.name_yend) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
- Examples
- --------
-
- >>> import numpy as np
- >>> import libpysal
- >>> import spreg
- >>> db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'),'r')
- >>> y = np.array(db.by_col("CRIME"))
- >>> y = np.reshape(y, (49,1))
- >>> X = []
- >>> X.append(db.by_col("INC"))
- >>> X = np.array(X).T
- >>> w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
- >>> w.transform = 'r'
- >>> w_lags = 1
- >>> yd2, q2 = spreg.set_endog(y, X, w, None, None, w_lags, True)
- >>> X = np.hstack((np.ones(y.shape),X))
-
- Example only with spatial lag
-
- >>> reg = spreg.error_sp.BaseGM_Combo(y, X, yend=yd2, q=q2, w=w.sparse)
-
- Print the betas
-
- >>> print(np.around(np.hstack((reg.betas[:-1],np.sqrt(reg.vm.diagonal()).reshape(3,1))),3))
- [[39.059 11.86 ]
- [-1.404 0.391]
- [ 0.467 0.2 ]]
-
- And lambda
-
- >>> print('Lamda: ', np.around(reg.betas[-1], 3))
- Lamda: [-0.048]
-
- Example with both spatial lag and other endogenous variables
-
- >>> X = []
- >>> X.append(db.by_col("INC"))
- >>> X = np.array(X).T
- >>> yd = []
- >>> yd.append(db.by_col("HOVAL"))
- >>> yd = np.array(yd).T
- >>> q = []
- >>> q.append(db.by_col("DISCBD"))
- >>> q = np.array(q).T
- >>> yd2, q2 = spreg.set_endog(y, X, w, yd, q, w_lags, True)
- >>> X = np.hstack((np.ones(y.shape),X))
- >>> reg = spreg.error_sp.BaseGM_Combo(y, X, yd2, q2, w=w.sparse)
- >>> betas = np.array([['CONSTANT'],['INC'],['HOVAL'],['W_CRIME']])
- >>> print(np.hstack((betas, np.around(np.hstack((reg.betas[:-1], np.sqrt(reg.vm.diagonal()).reshape(4,1))),4))))
- [['CONSTANT' '50.0944' '14.3593']
- ['INC' '-0.2552' '0.5667']
- ['HOVAL' '-0.6885' '0.3029']
- ['W_CRIME' '0.4375' '0.2314']]
-
- """
-
- def __init__(self, y, x, yend=None, q=None, w=None, w_lags=1, lag_q=True):
-
- BaseGM_Endog_Error.__init__(self, y=y, x=x, w=w, yend=yend, q=q)
-
-class GM_Combo(BaseGM_Combo):
+class GM_Combo(BaseGM_Endog_Error):
"""
GMM method for a spatial lag and error model with endogenous variables,
@@ -801,9 +702,13 @@ class GM_Combo(BaseGM_Combo):
Orders of W to include as instruments for the spatially
lagged dependent variable. For example, w_lags=1, then
instruments are WX; if w_lags=2, then WX, WWX; and so on.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the General Nesting
+ Spatial Model (GNSM) type.
lag_q : boolean
If True, then include spatial lags of the additional
- instruments (q).
+ instruments (q)
vm : boolean
If True, include variance-covariance matrix in summary
results
@@ -819,9 +724,13 @@ class GM_Combo(BaseGM_Combo):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -1015,6 +924,7 @@ def __init__(
q=None,
w=None,
w_lags=1,
+ slx_lags=0,
lag_q=True,
vm=False,
name_y=None,
@@ -1023,6 +933,7 @@ def __init__(
name_q=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -1030,23 +941,23 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
- yend2, q2 = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q)
- BaseGM_Combo.__init__(
- self,
- y=y,
- x=x_constant,
- w=w.sparse,
- yend=yend2,
- q=q2,
- w_lags=w_lags,
- lag_q=lag_q,
- )
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q)
+ else:
+ yend2, q2, wx = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
+
+ BaseGM_Endog_Error.__init__(self, y=y, x=x_constant, w=w.sparse, yend=yend2, q=q2)
+
self.rho = self.betas[-2]
self.predy_e, self.e_pred, warn = sp_att(
w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
set_warn(self, warn)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES"
+ self.title = "SPATIALLY WEIGHTED 2SLS - GM-COMBO MODEL"
+ if slx_lags > 0:
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (GNSM)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
@@ -1058,7 +969,294 @@ def __init__(
self.name_q.extend(USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q))
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Combo(reg=self, w=w, vm=vm)
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * (len(self.name_yend) - 1) + ['rho', 'lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _spat_pseudo_r2(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+
+class GMM_Error(GM_Error, GM_Endog_Error, GM_Combo, GM_Error_Het, GM_Endog_Error_Het,
+ GM_Combo_Het, GM_Error_Hom, GM_Endog_Error_Hom, GM_Combo_Hom):
+
+ """
+ Wrapper function to call any of the GMM methods for a spatial error model available in spreg
+
+ Parameters
+ ----------
+ y : array
+ nx1 array for dependent variable
+ x : array
+ Two dimensional array with n rows and one column for each
+ independent (exogenous) variable, excluding the constant
+ w : pysal W object
+ Spatial weights object (always needed)
+ yend : array
+ Two dimensional array with n rows and one column for each
+ endogenous variable (if any)
+ q : array
+ Two dimensional array with n rows and one column for each
+ external exogenous variable to use as instruments (if any)
+ (note: this should not contain any variables from x)
+ estimator : string
+ Choice of estimator to be used. Options are: 'het', which
+ is robust to heteroskedasticity, 'hom', which assumes
+ homoskedasticity, and 'kp98', which does not provide
+ inference on the spatial parameter for the error term.
+ add_wy : boolean
+ If True, then a spatial lag of the dependent variable is included.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM or GNSM type.
+ vm : boolean
+ If True, include variance-covariance matrix in summary
+ results
+ name_y : string
+ Name of dependent variable for use in output
+ name_x : list of strings
+ Names of independent variables for use in output
+ name_w : string
+ Name of weights matrix for use in output
+ name_yend : list of strings
+ Names of endogenous variables for use in output
+ name_q : list of strings
+ Names of instruments for use in output
+ name_ds : string
+ Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
+ **kwargs : keywords
+ Additional arguments to pass on to the estimators.
+ See the specific functions for details on what can be used.
+
+ Attributes
+ ----------
+ output : dataframe
+ regression results pandas dataframe
+ summary : string
+ Summary of regression results and diagnostics (note: use in
+ conjunction with the print command)
+ betas : array
+ kx1 array of estimated coefficients
+ u : array
+ nx1 array of residuals
+ e_filtered : array
+ nx1 array of spatially filtered residuals
+ predy : array
+ nx1 array of predicted y values
+ n : integer
+ Number of observations
+ k : integer
+ Number of variables for which coefficients are estimated
+ (including the constant)
+ y : array
+ nx1 array for dependent variable
+ x : array
+ Two dimensional array with n rows and one column for each
+ independent (exogenous) variable, including the constant
+ mean_y : float
+ Mean of dependent variable
+ std_y : float
+ Standard deviation of dependent variable
+ pr2 : float
+ Pseudo R squared (squared correlation between y and ypred)
+ vm : array
+ Variance covariance matrix (kxk)
+ sig2 : float
+ Sigma squared used in computations
+ std_err : array
+ 1xk array of standard errors of the betas
+ z_stat : list of tuples
+ z statistic; each tuple contains the pair (statistic,
+ p-value), where each is a float
+ name_y : string
+ Name of dependent variable for use in output
+ name_x : list of strings
+ Names of independent variables for use in output
+ name_w : string
+ Name of weights matrix for use in output
+ name_ds : string
+ Name of dataset for use in output
+ title : string
+ Name of the regression method used
+ name_yend : list of strings (optional)
+ Names of endogenous variables for use in output
+ name_z : list of strings (optional)
+ Names of exogenous and endogenous variables for use in
+ output
+ name_q : list of strings (optional)
+ Names of external instruments
+ name_h : list of strings (optional)
+ Names of all instruments used in ouput
+
+
+ Examples
+ --------
+
+ We first need to import the needed modules, namely numpy to convert the
+ data we read into arrays that ``spreg`` understands and ``libpysal`` to
+ handle the weights and file management.
+
+ >>> import numpy as np
+ >>> import libpysal
+ >>> from libpysal.examples import load_example
+
+ Open data on NCOVR US County Homicides (3085 areas) using libpysal.io.open().
+ This is the DBF associated with the NAT shapefile. Note that
+ libpysal.io.open() also reads data in CSV format; since the actual class
+ requires data to be passed in as numpy arrays, the user can read their
+ data in using any method.
+
+ >>> nat = load_example('Natregimes')
+ >>> db = libpysal.io.open(nat.get_path("natregimes.dbf"),'r')
+
+ Extract the HR90 column (homicide rates in 1990) from the DBF file and make it the
+ dependent variable for the regression. Note that PySAL requires this to be
+ an numpy array of shape (n, 1) as opposed to the also common shape of (n, )
+ that other packages accept.
+
+ >>> y_var = 'HR90'
+ >>> y = np.array([db.by_col(y_var)]).reshape(3085,1)
+
+ Extract UE90 (unemployment rate) and PS90 (population structure) vectors from
+ the DBF to be used as independent variables in the regression. Other variables
+ can be inserted by adding their names to x_var, such as x_var = ['Var1','Var2','...]
+ Note that PySAL requires this to be an nxj numpy array, where j is the
+ number of independent variables (not including a constant). By default
+ this model adds a vector of ones to the independent variables passed in.
+
+ >>> x_var = ['PS90','UE90']
+ >>> x = np.array([db.by_col(name) for name in x_var]).T
+
+ Since we want to run a spatial error model, we need to specify
+ the spatial weights matrix that includes the spatial configuration of the
+ observations. To do that, we can open an already existing gal file or
+ create a new one. In this case, we will create one from ``NAT.shp``.
+
+ >>> w = libpysal.weights.Rook.from_shapefile(nat.get_path("natregimes.shp"))
+
+ Unless there is a good reason not to do it, the weights have to be
+ row-standardized so every row of the matrix sums to one. Among other
+ things, this allows to interpret the spatial lag of a variable as the
+ average value of the neighboring observations. In PySAL, this can be
+ easily performed in the following way:
+
+ >>> w.transform = 'r'
+
+ The GMM_Error class can run error models and SARAR models, that is a spatial lag+error model.
+ In this example we will run a simple version of the latter, where we have the
+ spatial effects as well as exogenous variables. Since it is a spatial
+ model, we have to pass in the weights matrix. If we want to
+ have the names of the variables printed in the output summary, we will
+ have to pass them in as well, although this is optional.
+
+ >>> from spreg import GMM_Error
+ >>> model = GMM_Error(y, x, w=w, add_wy=True, name_y=y_var, name_x=x_var, name_ds='NAT')
+
+ Once we have run the model, we can explore a little bit the output. The
+ regression object we have created has many attributes so take your time to
+ discover them.
+
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 CONSTANT 2.176007 1.115807 1.950165 0.051156
+ 1 PS90 1.108054 0.207964 5.328096 0.0
+ 2 UE90 0.664362 0.061294 10.83893 0.0
+ 3 W_HR90 -0.066539 0.154395 -0.430964 0.666494
+ 4 lambda 0.765087 0.04268 17.926245 0.0
+
+ This class also allows the user to run a spatial lag+error model with the
+ extra feature of including non-spatial endogenous regressors. This means
+ that, in addition to the spatial lag and error, we consider some of the
+ variables on the right-hand side of the equation as endogenous and we
+ instrument for this. In this case we consider RD90 (resource deprivation)
+ as an endogenous regressor. We use FP89 (families below poverty)
+ for this and hence put it in the instruments parameter, 'q'.
+
+ >>> yd_var = ['RD90']
+ >>> yd = np.array([db.by_col(name) for name in yd_var]).T
+ >>> q_var = ['FP89']
+ >>> q = np.array([db.by_col(name) for name in q_var]).T
+
+ And then we can run and explore the model analogously to the previous combo:
+
+ >>> model = GMM_Error(y, x, yend=yd, q=q, w=w, add_wy=True, name_y=y_var, name_x=x_var, name_yend=yd_var, name_q=q_var, name_ds='NAT')
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 CONSTANT 5.44035 0.560476 9.706652 0.0
+ 1 PS90 1.427042 0.1821 7.836572 0.0
+ 2 UE90 -0.075224 0.050031 -1.503544 0.132699
+ 3 RD90 3.316266 0.261269 12.692924 0.0
+ 4 W_HR90 0.200314 0.057433 3.487777 0.000487
+ 5 lambda 0.136933 0.070098 1.953457 0.050765
+
+ The class also allows for estimating a GNS model by adding spatial lags of the exogenous variables, using the argument slx_lags:
+
+ >>> model = GMM_Error(y, x, w=w, add_wy=True, slx_lags=1, name_y=y_var, name_x=x_var, name_ds='NAT')
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 CONSTANT -0.554756 0.551765 -1.00542 0.314695
+ 1 PS90 1.09369 0.225895 4.841583 0.000001
+ 2 UE90 0.697393 0.082744 8.428291 0.0
+ 3 W_PS90 -1.533378 0.396651 -3.865811 0.000111
+ 4 W_UE90 -1.107944 0.33523 -3.305028 0.00095
+ 5 W_HR90 1.529277 0.389354 3.927728 0.000086
+ 6 lambda -0.917928 0.079569 -11.53625 0.0
+
+
+ """
+
+ def __init__(
+ self, y, x, w, yend=None, q=None, estimator='het', add_wy=False, slx_lags=0, vm=False, name_y=None, name_x=None, name_w=None, name_yend=None,
+ name_q=None, name_ds=None, latex=False, **kwargs):
+
+ if estimator == 'het':
+ if yend is None and not add_wy:
+ GM_Error_Het.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ elif yend is not None and not add_wy:
+ GM_Endog_Error_Het.__init__(self, y=y, x=x, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ elif add_wy:
+ GM_Combo_Het.__init__(self, y=y, x=x, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error not allowed. Using default arguments instead.')
+ GM_Error_Het.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex)
+ elif estimator == 'hom':
+ if yend is None and not add_wy:
+ GM_Error_Hom.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ elif yend is not None and not add_wy:
+ GM_Endog_Error_Hom.__init__(self, y=y, x=x, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ elif add_wy:
+ GM_Combo_Hom.__init__(self, y=y, x=x, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error not allowed. Using default arguments instead.')
+ GM_Error_Hom.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex)
+ elif estimator == 'kp98':
+ if yend is None and not add_wy:
+ GM_Error.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ elif yend is not None and not add_wy:
+ GM_Endog_Error.__init__(self, y=y, x=x, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ elif add_wy:
+ GM_Combo.__init__(self, y=y, x=x, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_ds=name_ds, latex=latex, **kwargs)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error not allowed. Using default arguments instead.')
+ GM_Error.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error not allowed. Using default arguments instead.')
+ GM_Error_Het.__init__(self, y=y, x=x, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ name_w=name_w, name_ds=name_ds, latex=latex)
def _momentsGM_Error(w, u):
@@ -1103,16 +1301,30 @@ def _test():
if __name__ == "__main__":
_test()
- import libpysal
+
import numpy as np
+ import libpysal
- dbf = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
- y = np.array([dbf.by_col("HOVAL")]).T
- names_to_extract = ["INC", "CRIME"]
- x = np.array([dbf.by_col(name) for name in names_to_extract]).T
- w = libpysal.io.open(libpysal.examples.get_path("columbus.gal"), "r").read()
- w.transform = "r"
- model = GM_Error(
- y, x, w, name_y="hoval", name_x=["income", "crime"], name_ds="columbus"
- )
- print(model.summary)
+ db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'),'r')
+ y = np.array(db.by_col("HOVAL"))
+ y = np.reshape(y, (49,1))
+ X = []
+ X.append(db.by_col("INC"))
+ X = np.array(X).T
+ yd = []
+ yd.append(db.by_col("CRIME"))
+ yd = np.array(yd).T
+ q = []
+ q.append(db.by_col("DISCBD"))
+ q = np.array(q).T
+
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = 'r'
+ #reg = GM_Error(y, X, w=w, name_x=['inc'], name_y='hoval', name_ds='columbus', vm=True)
+ #reg = GM_Endog_Error(y, X, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ # name_q=['discbd'], name_ds='columbus',vm=True)
+ reg = GM_Combo(y, X, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'], name_q=['discbd'],
+ name_ds='columbus', vm=True)
+
+ print(reg.output)
+ print(reg.summary)
\ No newline at end of file
diff --git a/spreg/error_sp_het.py b/spreg/error_sp_het.py
index f40a7ae9..50b838fb 100755
--- a/spreg/error_sp_het.py
+++ b/spreg/error_sp_het.py
@@ -12,12 +12,13 @@
import numpy.linalg as la
from . import ols as OLS
from . import user_output as USER
-from . import summary_output as SUMMARY
from . import twosls as TSLS
from . import utils as UTILS
-from .utils import RegressionPropsY, spdot, set_endog, sphstack, set_warn
+from .utils import RegressionPropsY, spdot, set_endog, sphstack, set_warn, get_lags
from scipy import sparse as SP
from libpysal.weights.spatial_lag import lag_spatial
+import pandas as pd
+from .output import output, _summary_iteration, _spat_pseudo_r2
__all__ = ["GM_Error_Het", "GM_Endog_Error_Het", "GM_Combo_Het"]
@@ -170,6 +171,9 @@ class GM_Error_Het(BaseGM_Error_Het):
independent (exogenous) variable, excluding the constant
w : pysal W object
Spatial weights object
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from :cite:`Arraiz2010`.
Note: epsilon provides an additional
@@ -191,9 +195,13 @@ class GM_Error_Het(BaseGM_Error_Het):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -336,6 +344,7 @@ def __init__(
y,
x,
w,
+ slx_lags=0,
max_iter=1,
epsilon=0.00001,
step1c=False,
@@ -344,6 +353,7 @@ def __init__(
name_x=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
@@ -351,6 +361,12 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+ self.title = "GM SPATIALLY WEIGHTED LEAST SQUARES (HET)"
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
BaseGM_Error_Het.__init__(
self,
y,
@@ -360,13 +376,16 @@ def __init__(
step1c=step1c,
epsilon=epsilon,
)
- self.title = "SPATIALLY WEIGHTED LEAST SQUARES (HET)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
self.name_x.append("lambda")
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Error_Het(reg=self, w=w, vm=vm)
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x)-1) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class BaseGM_Endog_Error_Het(RegressionPropsY):
@@ -582,6 +601,9 @@ class GM_Endog_Error_Het(BaseGM_Endog_Error_Het):
this should not contain any variables from x)
w : pysal W object
Spatial weights object
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from
:cite:`Arraiz2010`. Note: epsilon provides an additional
@@ -611,9 +633,13 @@ class GM_Endog_Error_Het(BaseGM_Endog_Error_Het):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -788,6 +814,7 @@ def __init__(
yend,
q,
w,
+ slx_lags=0,
max_iter=1,
epsilon=0.00001,
step1c=False,
@@ -799,6 +826,7 @@ def __init__(
name_q=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -806,6 +834,12 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+ self.title = "GM SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HET)"
+ if slx_lags > 0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
BaseGM_Endog_Error_Het.__init__(
self,
y=y,
@@ -818,7 +852,6 @@ def __init__(
epsilon=epsilon,
inv_method=inv_method,
)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HET)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
@@ -828,7 +861,12 @@ def __init__(
self.name_q = USER.set_name_q(name_q, q)
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Endog_Error_Het(reg=self, w=w, vm=vm)
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * len(self.name_yend) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class BaseGM_Combo_Het(BaseGM_Endog_Error_Het):
@@ -1026,6 +1064,10 @@ class GM_Combo_Het(BaseGM_Combo_Het):
Orders of W to include as instruments for the spatially
lagged dependent variable. For example, w_lags=1, then
instruments are WX; if w_lags=2, then WX, WWX; and so on.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the General Nesting
+ Spatial Model (GNSM) type.
lag_q : boolean
If True, then include spatial lags of the additional
instruments (q).
@@ -1058,9 +1100,13 @@ class GM_Combo_Het(BaseGM_Combo_Het):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -1255,6 +1301,7 @@ def __init__(
q=None,
w=None,
w_lags=1,
+ slx_lags=0,
lag_q=True,
max_iter=1,
epsilon=0.00001,
@@ -1267,6 +1314,7 @@ def __init__(
name_q=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -1274,7 +1322,13 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
- yend2, q2 = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q)
+
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q)
+ else:
+ yend2, q2, wx = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
+
BaseGM_Combo_Het.__init__(
self,
y=y,
@@ -1294,7 +1348,10 @@ def __init__(
w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
UTILS.set_warn(self, warn)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HET)"
+ self.title = "SPATIALLY WEIGHTED 2SLS- GM-COMBO MODEL (HET)"
+ if slx_lags > 0:
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (GNSM)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
@@ -1306,7 +1363,13 @@ def __init__(
self.name_q.extend(USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q))
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Combo_Het(reg=self, w=w, vm=vm)
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * (len(self.name_yend)-1) + ['rho', 'lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _spat_pseudo_r2(self)
+ self.other_top += _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
# Functions
@@ -1551,3 +1614,28 @@ def _test():
if __name__ == "__main__":
_test()
+ import numpy as np
+ import libpysal
+
+ db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'),'r')
+ y = np.array(db.by_col("HOVAL"))
+ y = np.reshape(y, (49,1))
+ X = []
+ X.append(db.by_col("INC"))
+ X = np.array(X).T
+ yd = []
+ yd.append(db.by_col("CRIME"))
+ yd = np.array(yd).T
+ q = []
+ q.append(db.by_col("DISCBD"))
+ q = np.array(q).T
+
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = 'r'
+ # reg = GM_Error_Het(y, X, w=w, name_x=['inc'], name_y='hoval', name_ds='columbus', vm=True)
+ # reg = GM_Endog_Error_Het(y, X, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ # name_q=['discbd'], name_ds='columbus',vm=True)
+ reg = GM_Combo_Het(y, X, yd, q, w=w, step1c=True, name_x=['inc'], name_y='hoval', name_yend=['crime'], name_q=['discbd'], name_ds='columbus',
+ vm=True)
+ print(reg.output)
+ print(reg.summary)
\ No newline at end of file
diff --git a/spreg/error_sp_het_regimes.py b/spreg/error_sp_het_regimes.py
index a5e6aafc..2f812d74 100644
--- a/spreg/error_sp_het_regimes.py
+++ b/spreg/error_sp_het_regimes.py
@@ -6,7 +6,6 @@
import numpy as np
import multiprocessing as mp
from . import user_output as USER
-from . import summary_output as SUMMARY
from . import utils as UTILS
from . import regimes as REGI
from .ols import BaseOLS
@@ -22,10 +21,12 @@
get_vc_het_tsls,
get_Omega_GS2SLS,
)
-from .utils import RegressionPropsY, spdot, set_endog, sphstack, set_warn, sp_att
+from .utils import RegressionPropsY, spdot, set_endog, sphstack, set_warn, sp_att, get_lags
from scipy import sparse as SP
from libpysal.weights.spatial_lag import lag_spatial
from platform import system
+import pandas as pd
+from .output import output, _summary_iteration, _spat_pseudo_r2
class GM_Error_Het_Regimes(RegressionPropsY, REGI.Regimes_Frame):
@@ -64,6 +65,9 @@ class GM_Error_Het_Regimes(RegressionPropsY, REGI.Regimes_Frame):
If True, a separate regression is run for each regime.
regime_lag_sep: boolean
Always False, kept for consistency, ignored.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from Arraiz
et al. Note: epsilon provides an additional stop condition.
@@ -90,9 +94,13 @@ class GM_Error_Het_Regimes(RegressionPropsY, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -304,6 +312,7 @@ def __init__(
cols2regi="all",
regime_err_sep=False,
regime_lag_sep=False,
+ slx_lags=0,
cores=False,
vm=False,
name_y=None,
@@ -311,6 +320,7 @@ def __init__(
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
@@ -329,7 +339,13 @@ def __init__(
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
- self.name_x_r = name_x
+
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
+ self.name_x_r = USER.set_name_x(name_x, x_constant)
cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant)
self.regimes_set = REGI._get_regimes_set(regimes)
@@ -339,11 +355,12 @@ def __init__(
if regime_err_sep == True:
if set(cols2regi) == set([True]):
- self._error_regimes_multi(
+ self._error_het_regimes_multi(
y,
x_constant,
regimes,
w,
+ slx_lags,
cores,
max_iter,
epsilon,
@@ -351,21 +368,23 @@ def __init__(
cols2regi,
vm,
name_x,
+ latex,
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
name_x = USER.set_name_x(name_x, x_constant)
- self.x, self.name_x = REGI.Regimes_Frame.__init__(
+ self.x, self.name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True,
)
ols = BaseOLS(y=y, x=self.x)
self.k = ols.x.shape[1]
@@ -412,16 +431,25 @@ def __init__(
self.vm = get_vm_het(moments_i[0], lambda3, self, w.sparse, vc3)
self.betas = np.vstack((ols_s.betas, lambda3))
self.e_filtered = self.u - lambda3 * lag_spatial(w, self.u)
- self.title = "SPATIALLY WEIGHTED LEAST SQUARES (HET) - REGIMES"
+ if slx_lags == 0:
+ self.title = "GM SPATIALLY WEIGHTED MODEL (HET) - REGIMES"
+ else:
+ self.title = "GM SPATIALLY WEIGHTED MODEL + SLX (SDEM-HET) - REGIMES"
+
self.name_x.append("lambda")
self.kf += 1
self.chow = REGI.Chow(self)
self._cache = {}
-
- SUMMARY.GM_Error_Het(reg=self, w=w, vm=vm, regimes=True)
-
- def _error_regimes_multi(
- self, y, x, regimes, w, cores, max_iter, epsilon, step1c, cols2regi, vm, name_x
+ self.output = pd.DataFrame(self.name_x,
+ columns=['var_names'])
+ self.output['var_type'] = ['x']*(len(self.name_x)-1)+['lambda']
+ self.output['regime'] = x_rlist + ['_Global']
+ self.output['equation'] = 0
+ self.other_top = _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+ def _error_het_regimes_multi(
+ self, y, x, regimes, w, slx_lags, cores, max_iter, epsilon, step1c, cols2regi, vm, name_x, latex
):
regi_ids = dict(
@@ -459,6 +487,7 @@ def _error_regimes_multi(
name_x + ["lambda"],
self.name_w,
self.name_regimes,
+ slx_lags,
),
)
else:
@@ -477,6 +506,7 @@ def _error_regimes_multi(
name_x + ["lambda"],
self.name_w,
self.name_regimes,
+ slx_lags,
)
)
@@ -501,6 +531,7 @@ def _error_regimes_multi(
results = {}
self.name_y, self.name_x = [], []
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -530,11 +561,17 @@ def _error_regimes_multi(
regi_ids[r],
] = results[r].e_filtered
self.name_y += results[r].name_y
+ results[r].name_x = [str(r) + '_lambda' if value == 'lambda' else value for value in results[r].name_x]
self.name_x += results[r].name_x
+ results[r].other_top = _summary_iteration(results[r])
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x,
+ 'var_type': ['x'] * (len(results[r].name_x)-1) +
+ ['lambda'],
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- SUMMARY.GM_Error_Het_multi(reg=self, multireg=self.multi, vm=vm, regimes=True)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class GM_Endog_Error_Het_Regimes(RegressionPropsY, REGI.Regimes_Frame):
@@ -581,6 +618,9 @@ class GM_Endog_Error_Het_Regimes(RegressionPropsY, REGI.Regimes_Frame):
If True, a separate regression is run for each regime.
regime_lag_sep : boolean
Always False, kept for consistency, ignored.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from
:cite:`Arraiz2010`. Note: epsilon provides an additional stop condition.
@@ -615,9 +655,13 @@ class GM_Endog_Error_Het_Regimes(RegressionPropsY, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -869,6 +913,7 @@ def __init__(
cols2regi="all",
regime_err_sep=False,
regime_lag_sep=False,
+ slx_lags=0,
inv_method="power_exp",
cores=False,
vm=False,
@@ -881,6 +926,7 @@ def __init__(
name_regimes=None,
summ=True,
add_lag=False,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -898,12 +944,16 @@ def __init__(
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+ if slx_lags > 0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
if summ:
name_yend = USER.set_name_yend(name_yend, yend)
self.name_y = USER.set_name_y(name_y)
name_q = USER.set_name_q(name_q, q)
self.name_x_r = USER.set_name_x(name_x, x_constant) + name_yend
-
cols2regi = REGI.check_cols2regi(
constant_regi, cols2regi, x_constant, yend=yend
)
@@ -914,13 +964,14 @@ def __init__(
if regime_err_sep == True:
if set(cols2regi) == set([True]):
- self._endog_error_regimes_multi(
+ self._endog_error_het_regimes_multi(
y,
x_constant,
regimes,
w,
yend,
q,
+ slx_lags,
cores,
max_iter,
epsilon,
@@ -932,10 +983,11 @@ def __init__(
name_yend,
name_q,
add_lag,
+ latex,
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
@@ -943,15 +995,16 @@ def __init__(
q, name_q = REGI.Regimes_Frame.__init__(
self, q, regimes, constant_regi=None, cols2regi="all", names=name_q
)
- x, name_x = REGI.Regimes_Frame.__init__(
+ x, name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True,
)
- yend2, name_yend = REGI.Regimes_Frame.__init__(
+ yend2, name_yend, yend_rlist = REGI.Regimes_Frame.__init__(
self,
yend,
regimes,
@@ -959,6 +1012,7 @@ def __init__(
cols2regi=cols2regi,
yend=True,
names=name_yend,
+ rlist=True,
)
# 1a. S2SLS --> \tilde{\delta}
@@ -1047,13 +1101,20 @@ def __init__(
self.kf += 1
self.chow = REGI.Chow(self)
self._cache = {}
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x']*len(self.name_x)+['yend']*len(self.name_yend)+['lambda']
+ self.output['regime'] = x_rlist + yend_rlist + ['_Global']
+ self.output['equation'] = 0
if summ:
- self.title = (
- "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HET) - REGIMES"
- )
- SUMMARY.GM_Endog_Error_Het(reg=self, w=w, vm=vm, regimes=True)
-
- def _endog_error_regimes_multi(
+ self.other_top = _summary_iteration(self)
+ if slx_lags == 0:
+ self.title = ("GM SPATIALLY WEIGHTED 2SLS (HET) - REGIMES")
+ else:
+ self.title = ("GM SPATIALLY WEIGHTED 2SLS + SLX (SDEM-HET) - REGIMES")
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+ def _endog_error_het_regimes_multi(
self,
y,
x,
@@ -1061,6 +1122,7 @@ def _endog_error_regimes_multi(
w,
yend,
q,
+ slx_lags,
cores,
max_iter,
epsilon,
@@ -1072,6 +1134,7 @@ def _endog_error_regimes_multi(
name_yend,
name_q,
add_lag,
+ latex,
):
regi_ids = dict(
@@ -1120,6 +1183,7 @@ def _endog_error_regimes_multi(
self.name_w,
self.name_regimes,
add_lag,
+ slx_lags,
),
)
else:
@@ -1144,6 +1208,7 @@ def _endog_error_regimes_multi(
self.name_w,
self.name_regimes,
add_lag,
+ slx_lags,
)
)
@@ -1174,6 +1239,7 @@ def _endog_error_regimes_multi(
self.name_h,
) = ([], [], [], [], [], [])
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -1215,17 +1281,19 @@ def _endog_error_regimes_multi(
self.e_pred[
regi_ids[r],
] = results[r].e_pred
+ results[r].other_top = _spat_pseudo_r2(results[r])
+ v_type = ['x'] * len(results[r].name_x) + ['yend'] * (len(results[r].name_yend)-1) + ['rho','lambda']
+ else:
+ results[r].other_top = ""
+ v_type = ['x'] * len(results[r].name_x) + ['yend'] * len(results[r].name_yend) + ['lambda']
+ results[r].other_top += _summary_iteration(results[r])
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_z,
+ 'var_type': v_type,
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- if add_lag != False:
- SUMMARY.GM_Combo_Het_multi(
- reg=self, multireg=self.multi, vm=vm, regimes=True
- )
- else:
- SUMMARY.GM_Endog_Error_Het_multi(
- reg=self, multireg=self.multi, vm=vm, regimes=True
- )
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class GM_Combo_Het_Regimes(GM_Endog_Error_Het_Regimes):
@@ -1274,6 +1342,9 @@ class GM_Combo_Het_Regimes(GM_Endog_Error_Het_Regimes):
If True, the spatial parameter for spatial lag is also
computed according to different regimes. If False (default),
the spatial parameter is fixed across regimes.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the GNSM type.
w_lags : integer
Orders of W to include as instruments for the spatially
lagged dependent variable. For example, w_lags=1, then
@@ -1315,9 +1386,13 @@ class GM_Combo_Het_Regimes(GM_Endog_Error_Het_Regimes):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -1595,6 +1670,7 @@ def __init__(
yend=None,
q=None,
w=None,
+ slx_lags=0,
w_lags=1,
lag_q=True,
max_iter=1,
@@ -1614,8 +1690,14 @@ def __init__(
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
-
+ if regime_lag_sep and not regime_err_sep:
+ set_warn(self, "regime_err_sep set to True when regime_lag_sep=True.")
+ regime_err_sep = True
+ if regime_err_sep and not regime_lag_sep:
+ set_warn(self, "regime_err_sep set to False when regime_lag_sep=False.")
+ regime_err_sep = False
n = USER.check_arrays(y, x)
self.step1c = step1c
y = USER.check_y(y, n)
@@ -1623,16 +1705,27 @@ def __init__(
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
- self.name_x_r = USER.set_name_x(name_x, x_constant)
self.name_y = USER.set_name_y(name_y)
name_yend = USER.set_name_yend(name_yend, yend)
name_q = USER.set_name_q(name_q, q)
- name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
- cols2regi = REGI.check_cols2regi(
- constant_regi, cols2regi, x_constant, yend=yend, add_cons=False
- )
+ if regime_err_sep and any(col != True for col in cols2regi):
+ set_warn(self, "All coefficients must vary across regimes if regime_err_sep = True, so setting cols2regi = 'all'.")
+ cols2regi = "all"
+
+ if slx_lags > 0:
+ yend2, q2, wx = set_endog(y, x_constant, w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
+ name_slx = USER.set_name_spatial_lags(name_x, slx_lags)
+ name_q.extend(USER.set_name_q_sp(name_slx[-len(name_x):], w_lags, name_q, lag_q, force_all=True))
+ name_x += name_slx
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant[:, :-1], yend=yend2, add_cons=False)
+ else:
+ name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
+ yend2, q2 = yend, q
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant, yend=yend2, add_cons=False)
+
self.regimes_set = REGI._get_regimes_set(regimes)
self.regimes = regimes
USER.check_regimes(self.regimes_set, n, x_constant.shape[1])
@@ -1640,27 +1733,25 @@ def __init__(
self.regime_lag_sep = regime_lag_sep
if regime_lag_sep == True:
- if regime_err_sep == False:
- raise Exception(
- "For spatial combo models, if spatial lag is set by regimes (regime_lag_sep=True), spatial error must also be set by regimes (regime_err_sep=True)."
- )
- add_lag = [w_lags, lag_q]
+ if slx_lags == 0:
+ add_lag = [w_lags, lag_q]
+ else:
+ cols2regi += [True]
+ add_lag = False
else:
- cols2regi += [False]
add_lag = False
- if regime_err_sep == True:
- raise Exception(
- "For spatial combo models, if spatial error is set by regimes (regime_err_sep=True), all coefficients including lambda (regime_lag_sep=True) must be set by regimes."
- )
- yend, q = set_endog(y, x_constant, w, yend, q, w_lags, lag_q)
+ cols2regi += [False]
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant, w, yend2, q2, w_lags, lag_q)
+
name_yend.append(USER.set_name_yend_sp(self.name_y))
GM_Endog_Error_Het_Regimes.__init__(
self,
y=y,
x=x_constant,
- yend=yend,
- q=q,
+ yend=yend2,
+ q=q2,
regimes=regimes,
w=w,
constant_regi=constant_regi,
@@ -1681,17 +1772,24 @@ def __init__(
name_regimes=name_regimes,
summ=False,
add_lag=add_lag,
+ latex=latex,
)
if regime_err_sep != True:
self.rho = self.betas[-2]
self.predy_e, self.e_pred, warn = UTILS.sp_att(
- w, self.y, self.predy, yend[:, -1].reshape(self.n, 1), self.rho
+ w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
UTILS.set_warn(self, warn)
self.regime_lag_sep = regime_lag_sep
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HET) - REGIMES"
- SUMMARY.GM_Combo_Het(reg=self, w=w, vm=vm, regimes=True)
+ if slx_lags == 0:
+ self.title = "GM SPATIALLY WEIGHTED 2SLS-COMBO MODEL (HET) - REGIMES"
+ else:
+ self.title = "GM SPATIALLY WEIGHTED 2SLS-COMBO + SLX (GNSM-HET) - REGIMES"
+ self.output.iat[-2, self.output.columns.get_loc('var_type')] = 'rho'
+ self.other_top = _spat_pseudo_r2(self)
+ self.other_top += _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def _work_error(
@@ -1708,6 +1806,7 @@ def _work_error(
name_x,
name_w,
name_regimes,
+ slx_lags,
):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
y_r = y[regi_ids[r]]
@@ -1717,7 +1816,10 @@ def _work_error(
)
set_warn(model, warn)
model.w = w_r
- model.title = "SPATIALLY WEIGHTED LEAST SQUARES ESTIMATION (HET) - REGIME %s" % r
+ if slx_lags == 0:
+ model.title = "GM SPATIALLY WEIGHTED LS (HET) - REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED LS + SLX (SDEM-HET) - REGIME %s" % r
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
@@ -1746,6 +1848,7 @@ def _work_endog_error(
name_w,
name_regimes,
add_lag,
+ slx_lags,
):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
y_r = y[regi_ids[r]]
@@ -1777,12 +1880,22 @@ def _work_endog_error(
w_r, model.y, model.predy, model.yend[:, -1].reshape(model.n, 1), model.rho
)
set_warn(model, warn)
- model.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HET) - REGIME %s" % r
+
+ if slx_lags == 0:
+ if add_lag != False:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS-COMBO MODEL (HET)- REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS (HET) - REGIME %s" % r
+ else:
+ if add_lag != False:
+ model.title = "GM SPATIAL COMBO MODEL + SLX (GNSM-HET) - REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS + SLX (SDEM-HET) - REGIME %s" % r
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
model.name_yend = ["%s_%s" % (str(r), i) for i in name_yend]
- model.name_z = model.name_x + model.name_yend + ["lambda"]
+ model.name_z = model.name_x + model.name_yend + [str(r)+"lambda"]
model.name_q = ["%s_%s" % (str(r), i) for i in name_q]
model.name_h = model.name_x + model.name_q
model.name_w = name_w
@@ -1801,3 +1914,33 @@ def _test():
if __name__ == "__main__":
_test()
+
+ import numpy as np
+ import libpysal
+
+ db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'),'r')
+ y = np.array(db.by_col("HOVAL"))
+ y = np.reshape(y, (49,1))
+ X = []
+ X.append(db.by_col("INC"))
+ X = np.array(X).T
+ yd = []
+ yd.append(db.by_col("CRIME"))
+ yd = np.array(yd).T
+ q = []
+ q.append(db.by_col("DISCBD"))
+ q = np.array(q).T
+
+ r_var = 'NSA'
+ regimes = db.by_col(r_var)
+
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = 'r'
+ #reg = GM_Error_Het_Regimes(y, X, regimes, w=w, name_x=['inc'], name_y='hoval', name_ds='columbus', vm=True,
+ # regime_err_sep=True)
+ #reg = GM_Endog_Error_Het_Regimes(y, X, yd, q, regimes, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ # name_q=['discbd'], name_ds='columbus',vm=True, regime_err_sep=True)
+ reg = GM_Combo_Het_Regimes(y, X, regimes, yd, q, w=w, step1c=True, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ name_q=['discbd'], name_ds='columbus', vm=True, regime_err_sep=False, regime_lag_sep=False)
+ print(reg.output)
+ print(reg.summary)
\ No newline at end of file
diff --git a/spreg/error_sp_hom.py b/spreg/error_sp_hom.py
index 5a4d8042..6208b8af 100644
--- a/spreg/error_sp_hom.py
+++ b/spreg/error_sp_hom.py
@@ -10,14 +10,14 @@
import numpy as np
from numpy import linalg as la
from . import ols as OLS
-from libpysal.weights.spatial_lag import lag_spatial
-from .utils import power_expansion, set_endog, iter_msg, sp_att
+from .utils import set_endog, iter_msg, sp_att
from .utils import get_A1_hom, get_A2_hom, get_A1_het, optim_moments
-from .utils import get_spFilter, get_lags, _moments2eqs
+from .utils import get_spFilter, get_lags
from .utils import spdot, RegressionPropsY, set_warn
from . import twosls as TSLS
from . import user_output as USER
-from . import summary_output as SUMMARY
+import pandas as pd
+from .output import output, _spat_pseudo_r2, _summary_iteration
__all__ = ["GM_Error_Hom", "GM_Endog_Error_Hom", "GM_Combo_Hom"]
@@ -178,6 +178,9 @@ class GM_Error_Hom(BaseGM_Error_Hom):
independent (exogenous) variable, excluding the constant
w : pysal W object
Spatial weights object
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from :cite:`Arraiz2010`.
Note: epsilon provides an additional stop condition.
@@ -201,10 +204,13 @@ class GM_Error_Hom(BaseGM_Error_Hom):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
-
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -341,6 +347,7 @@ def __init__(
y,
x,
w,
+ slx_lags=0,
max_iter=1,
epsilon=0.00001,
A1="hom_sc",
@@ -349,6 +356,7 @@ def __init__(
name_x=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
@@ -356,6 +364,12 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+ self.title = "GM SPATIALLY WEIGHTED LEAST SQUARES (HOM)"
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
BaseGM_Error_Hom.__init__(
self,
y=y,
@@ -365,13 +379,17 @@ def __init__(
max_iter=max_iter,
epsilon=epsilon,
)
- self.title = "SPATIALLY WEIGHTED LEAST SQUARES (HOM)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
self.name_x.append("lambda")
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Error_Hom(reg=self, w=w, vm=vm)
+ self.A1 = A1
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x) - 1) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class BaseGM_Endog_Error_Hom(RegressionPropsY):
@@ -564,6 +582,9 @@ class GM_Endog_Error_Hom(BaseGM_Endog_Error_Hom):
this should not contain any variables from x)
w : pysal W object
Spatial weights object
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from
:cite:`Arraiz2010`. Note: epsilon provides an additional stop condition.
@@ -591,9 +612,13 @@ class GM_Endog_Error_Hom(BaseGM_Endog_Error_Hom):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -769,6 +794,7 @@ def __init__(
yend,
q,
w,
+ slx_lags=0,
max_iter=1,
epsilon=0.00001,
A1="hom_sc",
@@ -779,6 +805,7 @@ def __init__(
name_q=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -786,6 +813,12 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+ self.title = "GM SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HOM)"
+ if slx_lags > 0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
BaseGM_Endog_Error_Hom.__init__(
self,
y=y,
@@ -797,7 +830,6 @@ def __init__(
max_iter=max_iter,
epsilon=epsilon,
)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HOM)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
@@ -807,7 +839,13 @@ def __init__(
self.name_q = USER.set_name_q(name_q, q)
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Endog_Error_Hom(reg=self, w=w, vm=vm)
+ self.A1 = A1
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * len(self.name_yend) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class BaseGM_Combo_Hom(BaseGM_Endog_Error_Hom):
@@ -1007,6 +1045,10 @@ class GM_Combo_Hom(BaseGM_Combo_Hom):
Orders of W to include as instruments for the spatially
lagged dependent variable. For example, w_lags=1, then
instruments are WX; if w_lags=2, then WX, WWX; and so on.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the General Nesting
+ Spatial Model (GNSM) type.
lag_q : boolean
If True, then include spatial lags of the additional
instruments (q).
@@ -1038,9 +1080,13 @@ class GM_Combo_Hom(BaseGM_Combo_Hom):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -1232,6 +1278,7 @@ def __init__(
q=None,
w=None,
w_lags=1,
+ slx_lags=0,
lag_q=True,
max_iter=1,
epsilon=0.00001,
@@ -1243,6 +1290,7 @@ def __init__(
name_q=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -1250,7 +1298,11 @@ def __init__(
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
- yend2, q2 = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q)
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q)
+ else:
+ yend2, q2, wx = set_endog(y, x_constant[:, 1:], w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
BaseGM_Combo_Hom.__init__(
self,
y=y,
@@ -1269,7 +1321,10 @@ def __init__(
w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
set_warn(self, warn)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HOM)"
+ self.title = "SPATIALLY WEIGHTED 2SLS- GM-COMBO MODEL (HOM)"
+ if slx_lags > 0:
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (GNSM)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x_constant)
@@ -1281,8 +1336,14 @@ def __init__(
self.name_q.extend(USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q))
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.name_w = USER.set_name_w(name_w, w)
- SUMMARY.GM_Combo_Hom(reg=self, w=w, vm=vm)
-
+ self.A1 = A1
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * (len(self.name_yend) - 1) + ['rho', 'lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _spat_pseudo_r2(self)
+ self.other_top += _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
# Functions
@@ -1514,5 +1575,31 @@ def _test():
if __name__ == "__main__":
-
_test()
+
+ import numpy as np
+ import libpysal
+
+ db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'),'r')
+ y = np.array(db.by_col("HOVAL"))
+ y = np.reshape(y, (49,1))
+ X = []
+ X.append(db.by_col("INC"))
+ X = np.array(X).T
+ yd = []
+ yd.append(db.by_col("CRIME"))
+ yd = np.array(yd).T
+ q = []
+ q.append(db.by_col("DISCBD"))
+ q = np.array(q).T
+
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = 'r'
+ #reg = GM_Error_Hom(y, X, w=w, name_x=['inc'], name_y='hoval', name_ds='columbus', vm=True)
+ #reg = GM_Endog_Error_Hom(y, X, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ # name_q=['discbd'], name_ds='columbus',vm=True)
+ reg = GM_Combo_Hom(y, X, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'], name_q=['discbd'],
+ name_ds='columbus', vm=True)
+
+ print(reg.output)
+ print(reg.summary)
\ No newline at end of file
diff --git a/spreg/error_sp_hom_regimes.py b/spreg/error_sp_hom_regimes.py
index 9812584e..f8d7dfae 100644
--- a/spreg/error_sp_hom_regimes.py
+++ b/spreg/error_sp_hom_regimes.py
@@ -26,9 +26,9 @@
)
from . import regimes as REGI
from . import user_output as USER
-from . import summary_output as SUMMARY
from platform import system
-
+import pandas as pd
+from .output import output, _summary_iteration, _spat_pseudo_r2
class GM_Error_Hom_Regimes(RegressionPropsY, REGI.Regimes_Frame):
@@ -67,6 +67,9 @@ class GM_Error_Hom_Regimes(RegressionPropsY, REGI.Regimes_Frame):
If True, a separate regression is run for each regime.
regime_lag_sep: boolean
Always False, kept for consistency, ignored.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from
:cite:`Arraiz2010`. Note: epsilon provides an additional
@@ -97,9 +100,13 @@ class GM_Error_Hom_Regimes(RegressionPropsY, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -317,12 +324,14 @@ def __init__(
cols2regi="all",
regime_err_sep=False,
regime_lag_sep=False,
+ slx_lags=0,
vm=False,
name_y=None,
name_x=None,
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
@@ -341,6 +350,12 @@ def __init__(
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
self.name_x_r = USER.set_name_x(name_x, x_constant)
cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant)
@@ -351,11 +366,12 @@ def __init__(
if regime_err_sep == True:
if set(cols2regi) == set([True]):
- self._error_regimes_multi(
+ self._error_hom_regimes_multi(
y,
x_constant,
regimes,
w,
+ slx_lags,
cores,
max_iter,
epsilon,
@@ -363,10 +379,11 @@ def __init__(
cols2regi,
vm,
name_x,
+ latex,
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
@@ -381,13 +398,14 @@ def __init__(
wA2 = get_A2_hom(w.sparse)
# 1a. OLS --> \tilde{\delta}
- self.x, self.name_x = REGI.Regimes_Frame.__init__(
+ self.x, self.name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True,
)
ols = BaseOLS(y=y, x=self.x)
self.k = ols.x.shape[1]
@@ -425,16 +443,25 @@ def __init__(
w.sparse, wA1, wA2, self, lambda2, moments[0]
)
self.e_filtered = self.u - lambda2 * lag_spatial(w, self.u)
- self.title = "SPATIALLY WEIGHTED LEAST SQUARES (HOM) - REGIMES"
+ if slx_lags == 0:
+ self.title = "GM SPATIALLY WEIGHTED MODEL (HOM) - REGIMES"
+ else:
+ self.title = "GM SPATIALLY WEIGHTED MODEL + SLX (SDEM-HOM) - REGIMES"
self.name_x.append("lambda")
self.kf += 1
self.chow = REGI.Chow(self)
self._cache = {}
- SUMMARY.GM_Error_Hom(reg=self, w=w, vm=vm, regimes=True)
-
- def _error_regimes_multi(
- self, y, x, regimes, w, cores, max_iter, epsilon, A1, cols2regi, vm, name_x
- ):
+ self.A1 = A1
+ self.output = pd.DataFrame(self.name_x,
+ columns=['var_names'])
+ self.output['var_type'] = ['x']*(len(self.name_x)-1)+['lambda']
+ self.output['regime'] = x_rlist + ['_Global']
+ self.output['equation'] = 0
+ self.other_top = _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+ def _error_hom_regimes_multi(
+ self, y, x, regimes, w, slx_lags, cores, max_iter, epsilon, A1, cols2regi, vm, name_x, latex):
regi_ids = dict(
(r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set
@@ -471,6 +498,7 @@ def _error_regimes_multi(
name_x + ["lambda"],
self.name_w,
self.name_regimes,
+ slx_lags,
),
)
else:
@@ -489,6 +517,7 @@ def _error_regimes_multi(
name_x + ["lambda"],
self.name_w,
self.name_regimes,
+ slx_lags,
)
)
@@ -513,6 +542,7 @@ def _error_regimes_multi(
results = {}
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -543,10 +573,16 @@ def _error_regimes_multi(
] = results[r].e_filtered
self.name_y += results[r].name_y
self.name_x += results[r].name_x
+ results[r].A1 = A1
+ results[r].other_top = _summary_iteration(results[r])
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x,
+ 'var_type': ['x'] * (len(results[r].name_x) - 1) +
+ ['lambda'],
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- SUMMARY.GM_Error_Hom_multi(reg=self, multireg=self.multi, vm=vm, regimes=True)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class GM_Endog_Error_Hom_Regimes(RegressionPropsY, REGI.Regimes_Frame):
@@ -594,6 +630,9 @@ class GM_Endog_Error_Hom_Regimes(RegressionPropsY, REGI.Regimes_Frame):
If True, a separate regression is run for each regime.
regime_lag_sep : boolean
Always False, kept for consistency, ignored.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
max_iter : int
Maximum number of iterations of steps 2a and 2b from
:cite:`Arraiz2010`. Note: epsilon provides an additional stop condition.
@@ -624,9 +663,13 @@ class GM_Endog_Error_Hom_Regimes(RegressionPropsY, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -884,6 +927,7 @@ def __init__(
cols2regi="all",
regime_err_sep=False,
regime_lag_sep=False,
+ slx_lags=0,
max_iter=1,
epsilon=0.00001,
A1="het",
@@ -898,6 +942,7 @@ def __init__(
name_regimes=None,
summ=True,
add_lag=False,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
@@ -914,6 +959,10 @@ def __init__(
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+ if slx_lags > 0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
if summ:
name_yend = USER.set_name_yend(name_yend, yend)
@@ -931,13 +980,14 @@ def __init__(
if regime_err_sep == True:
if set(cols2regi) == set([True]):
- self._endog_error_regimes_multi(
+ self._endog_error_hom_regimes_multi(
y,
x_constant,
regimes,
w,
yend,
q,
+ slx_lags,
cores,
max_iter,
epsilon,
@@ -948,10 +998,11 @@ def __init__(
name_yend,
name_q,
add_lag,
+ latex,
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
@@ -959,15 +1010,16 @@ def __init__(
q, name_q = REGI.Regimes_Frame.__init__(
self, q, regimes, constant_regi=None, cols2regi="all", names=name_q
)
- x, name_x = REGI.Regimes_Frame.__init__(
+ x, name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True,
)
- yend2, name_yend = REGI.Regimes_Frame.__init__(
+ yend2, name_yend, yend_rlist = REGI.Regimes_Frame.__init__(
self,
yend,
regimes,
@@ -975,6 +1027,7 @@ def __init__(
cols2regi=cols2regi,
yend=True,
names=name_yend,
+ rlist=True,
)
if A1 == "hom":
wA1 = get_A1_hom(w.sparse)
@@ -1042,13 +1095,21 @@ def __init__(
self.kf += 1
self.chow = REGI.Chow(self)
self._cache = {}
+ self.A1 = A1
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * len(self.name_yend) + ['lambda']
+ self.output['regime'] = x_rlist + yend_rlist + ['_Global']
+ self.output['equation'] = 0
if summ:
- self.title = (
- "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HOM) - REGIMES"
- )
- SUMMARY.GM_Endog_Error_Hom(reg=self, w=w, vm=vm, regimes=True)
-
- def _endog_error_regimes_multi(
+ self.other_top = _summary_iteration(self)
+ if slx_lags == 0:
+ self.title = ("GM SPATIALLY WEIGHTED 2SLS (HOM) - REGIMES")
+ else:
+ self.title = ("GM SPATIALLY WEIGHTED 2SLS WITH SLX (SDEM-HOM) - REGIMES")
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+ def _endog_error_hom_regimes_multi(
self,
y,
x,
@@ -1056,6 +1117,7 @@ def _endog_error_regimes_multi(
w,
yend,
q,
+ slx_lags,
cores,
max_iter,
epsilon,
@@ -1066,6 +1128,7 @@ def _endog_error_regimes_multi(
name_yend,
name_q,
add_lag,
+ latex,
):
regi_ids = dict(
@@ -1113,6 +1176,7 @@ def _endog_error_regimes_multi(
self.name_w,
self.name_regimes,
add_lag,
+ slx_lags,
),
)
else:
@@ -1136,6 +1200,7 @@ def _endog_error_regimes_multi(
self.name_w,
self.name_regimes,
add_lag,
+ slx_lags,
)
)
@@ -1166,6 +1231,7 @@ def _endog_error_regimes_multi(
self.name_h,
) = ([], [], [], [], [], [])
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -1207,17 +1273,20 @@ def _endog_error_regimes_multi(
self.e_pred[
regi_ids[r],
] = results[r].e_pred
+ results[r].other_top = _spat_pseudo_r2(results[r])
+ v_type = ['x'] * len(results[r].name_x) + ['yend'] * (len(results[r].name_yend)-1) + ['rho','lambda']
+ else:
+ results[r].other_top = ""
+ v_type = ['x'] * len(results[r].name_x) + ['yend'] * len(results[r].name_yend) + ['lambda']
+ results[r].A1 = A1
+ results[r].other_top += _summary_iteration(results[r])
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_z,
+ 'var_type': v_type,
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- if add_lag != False:
- SUMMARY.GM_Combo_Hom_multi(
- reg=self, multireg=self.multi, vm=vm, regimes=True
- )
- else:
- SUMMARY.GM_Endog_Error_Hom_multi(
- reg=self, multireg=self.multi, vm=vm, regimes=True
- )
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class GM_Combo_Hom_Regimes(GM_Endog_Error_Hom_Regimes):
@@ -1267,6 +1336,9 @@ class GM_Combo_Hom_Regimes(GM_Endog_Error_Hom_Regimes):
If True, the spatial parameter for spatial lag is also
computed according to different regimes. If False (default),
the spatial parameter is fixed across regimes.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the GNSM type.
w_lags : integer
Orders of W to include as instruments for the spatially
lagged dependent variable. For example, w_lags=1, then
@@ -1307,9 +1379,13 @@ class GM_Combo_Hom_Regimes(GM_Endog_Error_Hom_Regimes):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -1593,6 +1669,7 @@ def __init__(
yend=None,
q=None,
w=None,
+ slx_lags=0,
w_lags=1,
lag_q=True,
cores=False,
@@ -1611,22 +1688,42 @@ def __init__(
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
+ if regime_lag_sep and not regime_err_sep:
+ set_warn(self, "regime_err_sep set to True when regime_lag_sep=True.")
+ regime_err_sep = True
+ if regime_err_sep and not regime_lag_sep:
+ set_warn(self, "regime_err_sep set to False when regime_lag_sep=False.")
+ regime_err_sep = False
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+
self.name_y = USER.set_name_y(name_y)
name_yend = USER.set_name_yend(name_yend, yend)
name_q = USER.set_name_q(name_q, q)
- name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
- cols2regi = REGI.check_cols2regi(
- constant_regi, cols2regi, x_constant, yend=yend, add_cons=False
- )
+ if regime_err_sep and any(col != True for col in cols2regi):
+ set_warn(self, "All coefficients must vary across regimes if regime_err_sep = True, so setting cols2regi = 'all'.")
+ cols2regi = "all"
+
+ if slx_lags > 0:
+ yend2, q2, wx = set_endog(y, x_constant, w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
+ name_slx = USER.set_name_spatial_lags(name_x, slx_lags)
+ name_q.extend(USER.set_name_q_sp(name_slx[-len(name_x):], w_lags, name_q, lag_q, force_all=True))
+ name_x += name_slx
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant[:, :-1], yend=yend2, add_cons=False)
+ else:
+ name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
+ yend2, q2 = yend, q
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant, yend=yend2, add_cons=False)
+
self.regimes_set = REGI._get_regimes_set(regimes)
self.regimes = regimes
USER.check_regimes(self.regimes_set, n, x_constant.shape[1])
@@ -1634,27 +1731,26 @@ def __init__(
self.regime_lag_sep = regime_lag_sep
if regime_lag_sep == True:
- if regime_err_sep == False:
- raise Exception(
- "For spatial combo models, if spatial lag is set by regimes (regime_lag_sep=True), spatial error must also be set by regimes (regime_err_sep=True)."
- )
- add_lag = [w_lags, lag_q]
+ if slx_lags == 0:
+ add_lag = [w_lags, lag_q]
+ else:
+ add_lag = False
+ cols2regi += [True]
else:
- cols2regi += [False]
add_lag = False
- if regime_err_sep == True:
- raise Exception(
- "For spatial combo models, if spatial error is set by regimes (regime_err_sep=True), all coefficients including lambda (regime_lag_sep=True) must be set by regimes."
- )
- yend, q = set_endog(y, x_constant, w, yend, q, w_lags, lag_q)
+ cols2regi += [False]
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant, w, yend2, q2, w_lags, lag_q)
+
+
name_yend.append(USER.set_name_yend_sp(self.name_y))
GM_Endog_Error_Hom_Regimes.__init__(
self,
y=y,
x=x_constant,
- yend=yend,
- q=q,
+ yend=yend2,
+ q=q2,
regimes=regimes,
w=w,
vm=vm,
@@ -1674,17 +1770,24 @@ def __init__(
name_regimes=name_regimes,
summ=False,
add_lag=add_lag,
+ latex=latex,
)
if regime_err_sep != True:
self.rho = self.betas[-2]
self.predy_e, self.e_pred, warn = sp_att(
- w, self.y, self.predy, yend[:, -1].reshape(self.n, 1), self.rho
+ w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
set_warn(self, warn)
self.regime_lag_sep = regime_lag_sep
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HOM) - REGIMES"
- SUMMARY.GM_Combo_Hom(reg=self, w=w, vm=vm, regimes=True)
+ if slx_lags == 0:
+ self.title = "GM SPATIALLY WEIGHTED 2SLS-COMBO MODEL (HOM) - REGIMES"
+ else:
+ self.title = "GM SPATIALLY WEIGHTED 2SLS-COMBO WITH SLX (GNSM-HOM) - REGIMES"
+ self.output.iat[-2, self.output.columns.get_loc('var_type')] = 'rho'
+ self.other_top = _spat_pseudo_r2(self)
+ self.other_top += _summary_iteration(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def _work_error(
@@ -1701,6 +1804,7 @@ def _work_error(
name_x,
name_w,
name_regimes,
+ slx_lags,
):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
y_r = y[regi_ids[r]]
@@ -1710,7 +1814,10 @@ def _work_error(
)
set_warn(model, warn)
model.w = w_r
- model.title = "SPATIALLY WEIGHTED LEAST SQUARES ESTIMATION (HOM) - REGIME %s" % r
+ if slx_lags == 0:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS (HOM) - REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS + SLX (SDEM-HOM) - REGIME %s" % r
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
@@ -1738,6 +1845,7 @@ def _work_endog_error(
name_w,
name_regimes,
add_lag,
+ slx_lags,
):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
y_r = y[regi_ids[r]]
@@ -1762,12 +1870,21 @@ def _work_endog_error(
w_r, model.y, model.predy, model.yend[:, -1].reshape(model.n, 1), model.rho
)
set_warn(model, warn)
- model.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES (HOM) - REGIME %s" % r
+ if slx_lags == 0:
+ if add_lag != False:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS-COMBO MODEL (HOM)- REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS (HOM) - REGIME %s" % r
+ else:
+ if add_lag != False:
+ model.title = "GM SPATIAL COMBO MODEL + SLX (GNSM-HOM) - REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS + SLX (SDEM-HOM) - REGIME %s" % r
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
model.name_yend = ["%s_%s" % (str(r), i) for i in name_yend]
- model.name_z = model.name_x + model.name_yend + ["lambda"]
+ model.name_z = model.name_x + model.name_yend + [str(r)+"_lambda"]
model.name_q = ["%s_%s" % (str(r), i) for i in name_q]
model.name_h = model.name_x + model.name_q
model.name_w = name_w
@@ -1786,3 +1903,33 @@ def _test():
if __name__ == "__main__":
_test()
+
+ import numpy as np
+ import libpysal
+
+ db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'),'r')
+ y = np.array(db.by_col("HOVAL"))
+ y = np.reshape(y, (49,1))
+ X = []
+ X.append(db.by_col("INC"))
+ X = np.array(X).T
+ yd = []
+ yd.append(db.by_col("CRIME"))
+ yd = np.array(yd).T
+ q = []
+ q.append(db.by_col("DISCBD"))
+ q = np.array(q).T
+
+ r_var = 'NSA'
+ regimes = db.by_col(r_var)
+
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = 'r'
+ #reg = GM_Error_Hom_Regimes(y, X, regimes, w=w, name_x=['inc'], name_y='hoval', name_ds='columbus', vm=True,
+ # regime_err_sep=True)
+ #reg = GM_Endog_Error_Hom_Regimes(y, X, yd, q, regimes, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ # name_q=['discbd'], name_ds='columbus',vm=True, regime_err_sep=True)
+ reg = GM_Combo_Hom_Regimes(y, X, regimes, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ name_q=['discbd'], name_ds='columbus', vm=True, regime_err_sep=False, regime_lag_sep=False)
+ print(reg.output)
+ print(reg.summary)
\ No newline at end of file
diff --git a/spreg/error_sp_regimes.py b/spreg/error_sp_regimes.py
index b1c1feea..8c62c7d8 100644
--- a/spreg/error_sp_regimes.py
+++ b/spreg/error_sp_regimes.py
@@ -8,7 +8,6 @@
import multiprocessing as mp
from . import regimes as REGI
from . import user_output as USER
-from . import summary_output as SUMMARY
from libpysal.weights.spatial_lag import lag_spatial
from .ols import BaseOLS
from .twosls import BaseTSLS
@@ -17,6 +16,10 @@
from .utils import optim_moments, get_spFilter, get_lags
from .utils import spdot, RegressionPropsY
from .sputils import sphstack
+import pandas as pd
+from .output import output, _spat_pseudo_r2
+from .error_sp_het_regimes import GM_Error_Het_Regimes, GM_Endog_Error_Het_Regimes, GM_Combo_Het_Regimes
+from .error_sp_hom_regimes import GM_Error_Hom_Regimes, GM_Endog_Error_Hom_Regimes, GM_Combo_Hom_Regimes
class GM_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
@@ -55,6 +58,9 @@ class GM_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
If True, a separate regression is run for each regime.
regime_lag_sep: boolean
Always False, kept for consistency, ignored.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
vm : boolean
If True, include variance-covariance matrix in summary
results
@@ -72,10 +78,13 @@ class GM_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
-
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -251,28 +260,15 @@ class GM_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
values in model.se_betas). Alternatively, we can have a summary of the
output by typing: model.summary
- >>> print(model.name_x)
- ['0_CONSTANT', '0_PS90', '0_UE90', '1_CONSTANT', '1_PS90', '1_UE90', 'lambda']
- >>> np.around(model.betas, decimals=6)
- array([[0.074807],
- [0.786107],
- [0.538849],
- [5.103756],
- [1.196009],
- [0.600533],
- [0.364103]])
- >>> np.around(model.std_err, decimals=6)
- array([0.379864, 0.152316, 0.051942, 0.471285, 0.19867 , 0.057252])
- >>> np.around(model.z_stat, decimals=6)
- array([[ 0.196932, 0.843881],
- [ 5.161042, 0. ],
- [10.37397 , 0. ],
- [10.829455, 0. ],
- [ 6.02007 , 0. ],
- [10.489215, 0. ]])
- >>> np.around(model.sig2, decimals=6)
- 28.172732
-
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 0.074811 0.379864 0.196942 0.843873
+ 1 0_PS90 0.786105 0.152315 5.161043 0.0
+ 2 0_UE90 0.538848 0.051942 10.373969 0.0
+ 3 1_CONSTANT 5.103761 0.471284 10.82949 0.0
+ 4 1_PS90 1.196009 0.19867 6.020074 0.0
+ 5 1_UE90 0.600532 0.057252 10.489217 0.0
+ 6 lambda 0.3641 None None None
"""
def __init__(
@@ -289,17 +285,26 @@ def __init__(
cols2regi="all",
regime_err_sep=False,
regime_lag_sep=False,
+ slx_lags=0,
cores=False,
name_ds=None,
name_regimes=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
- x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
+ x_constant, name_x, warn = USER.check_constant(
+ x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
self.name_x_r = USER.set_name_x(name_x, x_constant)
self.constant_regi = constant_regi
@@ -319,22 +324,24 @@ def __init__(
if regime_err_sep == True:
if set(cols2regi) == set([True]):
self._error_regimes_multi(
- y, x_constant, regimes, w, cores, cols2regi, vm, name_x
+ y, x_constant, regimes, w, slx_lags, cores, cols2regi, vm, name_x, latex
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
- x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
+ x_constant = sphstack(
+ np.ones((x_constant.shape[0], 1)), x_constant)
name_x = USER.set_name_x(name_x, x_constant)
- self.x, self.name_x = REGI.Regimes_Frame.__init__(
+ self.x, self.name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True,
)
ols = BaseOLS(y=y, x=self.x)
self.k = ols.x.shape[1]
@@ -354,14 +361,22 @@ def __init__(
self.sig2 = ols2.sig2n
self.e_filtered = self.u - lambda1 * lag_spatial(w, self.u)
self.vm = self.sig2 * ols2.xtxi
- self.title = "SPATIALLY WEIGHTED LEAST SQUARES - REGIMES"
+ if slx_lags == 0:
+ self.title = "GM SPATIALLY WEIGHTED MODEL - REGIMES"
+ else:
+ self.title = "GM SPATIALLY WEIGHTED MODEL + SLX (SDEM) - REGIMES"
self.name_x.append("lambda")
self.kf += 1
self.chow = REGI.Chow(self)
self._cache = {}
- SUMMARY.GM_Error(reg=self, w=w, vm=vm, regimes=True)
-
- def _error_regimes_multi(self, y, x, regimes, w, cores, cols2regi, vm, name_x):
+ self.output = pd.DataFrame(self.name_x,
+ columns=['var_names'])
+ self.output['var_type'] = ['x']*(len(self.name_x)-1)+['lambda']
+ self.output['regime'] = x_rlist + ['_Global']
+ self.output['equation'] = 0
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+ def _error_regimes_multi(self, y, x, regimes, w, slx_lags, cores, cols2regi, vm, name_x, latex):
regi_ids = dict(
(r, list(np.where(np.array(regimes) == r)[0])) for r in self.regimes_set
)
@@ -394,6 +409,7 @@ def _error_regimes_multi(self, y, x, regimes, w, cores, cols2regi, vm, name_x):
name_x + ["lambda"],
self.name_w,
self.name_regimes,
+ slx_lags,
),
)
else:
@@ -409,6 +425,7 @@ def _error_regimes_multi(self, y, x, regimes, w, cores, cols2regi, vm, name_x):
name_x + ["lambda"],
self.name_w,
self.name_regimes,
+ slx_lags,
)
)
@@ -432,6 +449,8 @@ def _error_regimes_multi(self, y, x, regimes, w, cores, cols2regi, vm, name_x):
results = {}
self.name_y, self.name_x = [], []
+ self.output = pd.DataFrame(
+ columns=['var_names', 'var_type', 'regime', 'equation'])
counter = 0
for r in self.regimes_set:
"""
@@ -446,11 +465,11 @@ def _error_regimes_multi(self, y, x, regimes, w, cores, cols2regi, vm, name_x):
results[r] = results_p[r].get()
self.vm[
- (counter * self.kr) : ((counter + 1) * self.kr),
- (counter * self.kr) : ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
] = results[r].vm
self.betas[
- (counter * (self.kr + 1)) : ((counter + 1) * (self.kr + 1)),
+ (counter * (self.kr + 1)): ((counter + 1) * (self.kr + 1)),
] = results[r].betas
self.u[
regi_ids[r],
@@ -463,10 +482,14 @@ def _error_regimes_multi(self, y, x, regimes, w, cores, cols2regi, vm, name_x):
] = results[r].e_filtered
self.name_y += results[r].name_y
self.name_x += results[r].name_x
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x,
+ 'var_type': ['x'] * (len(results[r].name_x) - 1) +
+ ['lambda'],
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- SUMMARY.GM_Error_multi(reg=self, multireg=self.multi, vm=vm, regimes=True)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class GM_Endog_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
@@ -513,6 +536,9 @@ class GM_Endog_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
If True, a separate regression is run for each regime.
regime_lag_sep: boolean
Always False, kept for consistency, ignored.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
vm : boolean
If True, include variance-covariance matrix in summary
results
@@ -534,9 +560,13 @@ class GM_Endog_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -742,22 +772,17 @@ class GM_Endog_Error_Regimes(RegressionPropsY, REGI.Regimes_Frame):
endogenous variables included. Alternatively, we can have a summary of the
output by typing: model.summary
- >>> print(model.name_z)
- ['0_CONSTANT', '0_PS90', '0_UE90', '1_CONSTANT', '1_PS90', '1_UE90', '0_RD90', '1_RD90', 'lambda']
- >>> np.around(model.betas, decimals=5)
- array([[ 3.59718],
- [ 1.0652 ],
- [ 0.15822],
- [ 9.19754],
- [ 1.88082],
- [-0.24878],
- [ 2.46161],
- [ 3.57943],
- [ 0.25564]])
- >>> np.around(model.std_err, decimals=6)
- array([0.522633, 0.137555, 0.063054, 0.473654, 0.18335 , 0.072786,
- 0.300711, 0.240413])
-
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 3.597178 0.522633 6.882796 0.0
+ 1 0_PS90 1.065203 0.137555 7.743852 0.0
+ 2 0_UE90 0.15822 0.063054 2.509282 0.012098
+ 6 0_RD90 2.461609 0.300711 8.185967 0.0
+ 3 1_CONSTANT 9.197542 0.473654 19.418268 0.0
+ 4 1_PS90 1.880815 0.18335 10.258046 0.0
+ 5 1_UE90 -0.248777 0.072786 -3.417919 0.000631
+ 7 1_RD90 3.579429 0.240413 14.888666 0.0
+ 8 lambda 0.255639 None None None
"""
def __init__(
@@ -774,6 +799,7 @@ def __init__(
cols2regi="all",
regime_err_sep=False,
regime_lag_sep=False,
+ slx_lags=0,
name_y=None,
name_x=None,
name_yend=None,
@@ -783,14 +809,22 @@ def __init__(
name_regimes=None,
summ=True,
add_lag=False,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
- x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
+ x_constant, name_x, warn = USER.check_constant(
+ x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+
+ if slx_lags > 0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
self.constant_regi = constant_regi
self.cols2regi = cols2regi
self.name_ds = USER.set_name_ds(name_ds)
@@ -822,6 +856,7 @@ def __init__(
w,
yend,
q,
+ slx_lags,
cores,
cols2regi,
vm,
@@ -829,26 +864,29 @@ def __init__(
name_yend,
name_q,
add_lag,
+ latex,
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
- x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
+ x_constant = sphstack(
+ np.ones((x_constant.shape[0], 1)), x_constant)
name_x = USER.set_name_x(name_x, x_constant)
q, name_q = REGI.Regimes_Frame.__init__(
self, q, regimes, constant_regi=None, cols2regi="all", names=name_q
)
- x, name_x = REGI.Regimes_Frame.__init__(
+ x, name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True,
)
- yend2, name_yend = REGI.Regimes_Frame.__init__(
+ yend2, name_yend, yend_rlist = REGI.Regimes_Frame.__init__(
self,
yend,
regimes,
@@ -856,6 +894,7 @@ def __init__(
cols2regi=cols2regi,
yend=True,
names=name_yend,
+ rlist=True,
)
tsls = BaseTSLS(y=y, x=x, yend=yend2, q=q)
@@ -896,9 +935,19 @@ def __init__(
self.kf += 1
self.chow = REGI.Chow(self)
self._cache = {}
+ self.output = pd.DataFrame(self.name_z,
+ columns=['var_names'])
+ self.output['var_type'] = [
+ 'x'] * len(self.name_x) + ['yend'] * len(self.name_yend) + ['lambda']
+ self.output['regime'] = x_rlist + yend_rlist + ['_Global']
+ self.output['equation'] = 0
if summ:
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES - REGIMES"
- SUMMARY.GM_Endog_Error(reg=self, w=w, vm=vm, regimes=True)
+ if slx_lags == 0:
+ self.title = ("GM SPATIALLY WEIGHTED 2SLS - REGIMES")
+ else:
+ self.title = ("GM SPATIALLY WEIGHTED 2SLS WITH SLX (SDEM) - REGIMES")
+ output(reg=self, vm=vm, robust=False,
+ other_end=False, latex=latex)
def _endog_error_regimes_multi(
self,
@@ -908,6 +957,7 @@ def _endog_error_regimes_multi(
w,
yend,
q,
+ slx_lags,
cores,
cols2regi,
vm,
@@ -915,6 +965,7 @@ def _endog_error_regimes_multi(
name_yend,
name_q,
add_lag,
+ latex,
):
regi_ids = dict(
@@ -959,6 +1010,7 @@ def _endog_error_regimes_multi(
self.name_w,
self.name_regimes,
add_lag,
+ slx_lags,
),
)
else:
@@ -979,6 +1031,7 @@ def _endog_error_regimes_multi(
self.name_w,
self.name_regimes,
add_lag,
+ slx_lags,
)
)
@@ -1009,6 +1062,8 @@ def _endog_error_regimes_multi(
self.name_h,
) = ([], [], [], [], [], [])
counter = 0
+ self.output = pd.DataFrame(
+ columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -1022,11 +1077,11 @@ def _endog_error_regimes_multi(
results[r] = results_p[r].get()
self.vm[
- (counter * self.kr) : ((counter + 1) * self.kr),
- (counter * self.kr) : ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
] = results[r].vm
self.betas[
- (counter * (self.kr + 1)) : ((counter + 1) * (self.kr + 1)),
+ (counter * (self.kr + 1)): ((counter + 1) * (self.kr + 1)),
] = results[r].betas
self.u[
regi_ids[r],
@@ -1050,15 +1105,20 @@ def _endog_error_regimes_multi(
self.e_pred[
regi_ids[r],
] = results[r].e_pred
+ results[r].other_top = _spat_pseudo_r2(results[r])
+ v_type = ['x'] * len(results[r].name_x) + ['yend'] * \
+ (len(results[r].name_yend) - 1) + ['rho', 'lambda']
+ else:
+ results[r].other_top = ""
+ v_type = ['x'] * len(results[r].name_x) + ['yend'] * \
+ len(results[r].name_yend) + ['lambda']
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_z,
+ 'var_type': v_type,
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- if add_lag != False:
- SUMMARY.GM_Combo_multi(reg=self, multireg=self.multi, vm=vm, regimes=True)
- else:
- SUMMARY.GM_Endog_Error_multi(
- reg=self, multireg=self.multi, vm=vm, regimes=True
- )
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
class GM_Combo_Regimes(GM_Endog_Error_Regimes, REGI.Regimes_Frame):
@@ -1107,6 +1167,9 @@ class GM_Combo_Regimes(GM_Endog_Error_Regimes, REGI.Regimes_Frame):
If True, the spatial parameter for spatial lag is also
computed according to different regimes. If False (default),
the spatial parameter is fixed accross regimes.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the GNSM type.
w_lags : integer
Orders of W to include as instruments for the spatially
lagged dependent variable. For example, w_lags=1, then
@@ -1135,9 +1198,13 @@ class GM_Combo_Regimes(GM_Endog_Error_Regimes, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -1350,22 +1417,16 @@ class GM_Combo_Regimes(GM_Endog_Error_Regimes, REGI.Regimes_Frame):
output by typing: model.summary
Alternatively, we can check the betas:
- >>> print(model.name_z)
- ['0_CONSTANT', '0_PS90', '0_UE90', '1_CONSTANT', '1_PS90', '1_UE90', '_Global_W_HR90', 'lambda']
- >>> print(np.around(model.betas,4))
- [[ 1.4607]
- [ 0.958 ]
- [ 0.5658]
- [ 9.113 ]
- [ 1.1338]
- [ 0.6517]
- [-0.4583]
- [ 0.6136]]
-
- And lambda:
-
- >>> print('lambda: ', np.around(model.betas[-1], 4))
- lambda: [0.6136]
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 1.460707 0.704174 2.074356 0.038046
+ 1 0_PS90 0.95795 0.171485 5.586214 0.0
+ 2 0_UE90 0.565805 0.053665 10.543203 0.0
+ 3 1_CONSTANT 9.112998 1.525875 5.972311 0.0
+ 4 1_PS90 1.13382 0.20552 5.51683 0.0
+ 5 1_UE90 0.65169 0.061106 10.664938 0.0
+ 6 _Global_W_HR90 -0.458326 0.145599 -3.147859 0.001645
+ 7 lambda 0.613599 None None None
This class also allows the user to run a spatial lag+error model with the
extra feature of including non-spatial endogenous regressors. This means
@@ -1383,24 +1444,18 @@ class GM_Combo_Regimes(GM_Endog_Error_Regimes, REGI.Regimes_Frame):
And then we can run and explore the model analogously to the previous combo:
>>> model = GM_Combo_Regimes(y, x, regimes, yd, q, w=w, name_y=y_var, name_x=x_var, name_yend=yd_var, name_q=q_var, name_regimes=r_var, name_ds='NAT')
- >>> print(model.name_z)
- ['0_CONSTANT', '0_PS90', '0_UE90', '1_CONSTANT', '1_PS90', '1_UE90', '0_RD90', '1_RD90', '_Global_W_HR90', 'lambda']
- >>> print(model.betas)
- [[ 3.41963782]
- [ 1.04065841]
- [ 0.16634393]
- [ 8.86544628]
- [ 1.85120528]
- [-0.24908469]
- [ 2.43014046]
- [ 3.61645481]
- [ 0.03308671]
- [ 0.18684992]]
- >>> print(np.sqrt(model.vm.diagonal()))
- [0.53067577 0.13271426 0.06058025 0.76406411 0.17969783 0.07167421
- 0.28943121 0.25308326 0.06126529]
- >>> print('lambda: ', np.around(model.betas[-1], 4))
- lambda: [0.1868]
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 3.419638 0.530676 6.443931 0.0
+ 1 0_PS90 1.040658 0.132714 7.841346 0.0
+ 2 0_UE90 0.166344 0.06058 2.745844 0.006036
+ 6 0_RD90 2.43014 0.289431 8.396263 0.0
+ 3 1_CONSTANT 8.865446 0.764064 11.603014 0.0
+ 4 1_PS90 1.851205 0.179698 10.301769 0.0
+ 5 1_UE90 -0.249085 0.071674 -3.475235 0.00051
+ 7 1_RD90 3.616455 0.253083 14.289586 0.0
+ 8 _Global_W_HR90 0.033087 0.061265 0.540057 0.589158
+ 9 lambda 0.18685 None None None
"""
def __init__(
@@ -1411,6 +1466,7 @@ def __init__(
yend=None,
q=None,
w=None,
+ slx_lags=0,
w_lags=1,
lag_q=True,
cores=False,
@@ -1426,22 +1482,41 @@ def __init__(
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
-
+ if regime_lag_sep and not regime_err_sep:
+ set_warn(self, "regime_err_sep set to True when regime_lag_sep=True.")
+ regime_err_sep = True
+ if regime_err_sep and not regime_lag_sep:
+ set_warn(self, "regime_err_sep set to False when regime_lag_sep=False.")
+ regime_err_sep = False
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
- x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
+ x_constant, name_x, warn = USER.check_constant(
+ x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
self.name_y = USER.set_name_y(name_y)
name_yend = USER.set_name_yend(name_yend, yend)
name_q = USER.set_name_q(name_q, q)
- name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
- cols2regi = REGI.check_cols2regi(
- constant_regi, cols2regi, x_constant, yend=yend, add_cons=False
- )
+ if regime_err_sep and any(col != True for col in cols2regi):
+ set_warn(self, "All coefficients must vary across regimes if regime_err_sep = True, so setting cols2regi = 'all'.")
+ cols2regi = "all"
+
+ if slx_lags > 0:
+ yend2, q2, wx = set_endog(y, x_constant, w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
+ name_slx = USER.set_name_spatial_lags(name_x, slx_lags)
+ name_q.extend(USER.set_name_q_sp(name_slx[-len(name_x):], w_lags, name_q, lag_q, force_all=True))
+ name_x += name_slx
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant[:, :-1], yend=yend2, add_cons=False)
+ else:
+ name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
+ yend2, q2 = yend, q
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant, yend=yend2, add_cons=False)
+
self.regimes_set = REGI._get_regimes_set(regimes)
self.regimes = regimes
USER.check_regimes(self.regimes_set, n, x_constant.shape[1])
@@ -1449,27 +1524,27 @@ def __init__(
self.regime_lag_sep = regime_lag_sep
if regime_lag_sep == True:
- if regime_err_sep == False:
- raise Exception(
- "For spatial combo models, if spatial lag is set by regimes (regime_lag_sep=True), spatial error must also be set by regimes (regime_err_sep=True)."
- )
- add_lag = [w_lags, lag_q]
+ if slx_lags == 0:
+ add_lag = [w_lags, lag_q]
+ else:
+ add_lag = False
+ cols2regi += [True]
+
else:
- if regime_err_sep == True:
- raise Exception(
- "For spatial combo models, if spatial error is set by regimes (regime_err_sep=True), all coefficients including lambda (regime_lag_sep=True) must be set by regimes."
- )
- cols2regi += [False]
add_lag = False
- yend, q = set_endog(y, x_constant, w, yend, q, w_lags, lag_q)
+ cols2regi += [False]
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant, w, yend2, q2, w_lags, lag_q)
+
name_yend.append(USER.set_name_yend_sp(self.name_y))
+ print(cols2regi, x_constant.shape[1], yend2.shape[1], name_x, name_yend, name_q)
GM_Endog_Error_Regimes.__init__(
self,
y=y,
x=x_constant,
- yend=yend,
- q=q,
+ yend=yend2,
+ q=q2,
regimes=regimes,
w=w,
vm=vm,
@@ -1486,17 +1561,399 @@ def __init__(
name_regimes=name_regimes,
summ=False,
add_lag=add_lag,
+ latex=latex,
)
if regime_err_sep != True:
self.rho = self.betas[-2]
self.predy_e, self.e_pred, warn = sp_att(
- w, self.y, self.predy, yend[:, -1].reshape(self.n, 1), self.rho
+ w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
set_warn(self, warn)
- self.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES - REGIMES"
- SUMMARY.GM_Combo(reg=self, w=w, vm=vm, regimes=True)
+ if slx_lags == 0:
+ self.title = "SPATIALLY WEIGHTED 2SLS - GM-COMBO MODEL - REGIMES"
+ else:
+ self.title = "SPATIALLY WEIGHTED 2SLS - GM-COMBO WITH SLX (GNSM) - REGIMES"
+ self.output.iat[-2,
+ self.output.columns.get_loc('var_type')] = 'rho'
+ self.other_top = _spat_pseudo_r2(self)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
+
+
+class GMM_Error_Regimes(GM_Error_Regimes, GM_Combo_Regimes, GM_Endog_Error_Regimes,
+ GM_Error_Het_Regimes, GM_Combo_Het_Regimes, GM_Endog_Error_Het_Regimes,
+ GM_Error_Hom_Regimes, GM_Combo_Hom_Regimes, GM_Endog_Error_Hom_Regimes
+ ):
+
+ """
+ Wrapper function to call any of the GM methods for a spatial error regimes model available in spreg
+
+ Parameters
+ ----------
+ y : array
+ nx1 array for dependent variable
+ x : array
+ Two dimensional array with n rows and one column for each
+ independent (exogenous) variable, excluding the constant
+ regimes : list
+ List of n values with the mapping of each
+ observation to a regime. Assumed to be aligned with 'x'.
+ w : pysal W object
+ Spatial weights object (always needed)
+ yend : array
+ Two dimensional array with n rows and one column for each
+ endogenous variable (if any)
+ q : array
+ Two dimensional array with n rows and one column for each
+ external exogenous variable to use as instruments (if any)
+ (note: this should not contain any variables from x)
+ estimator : string
+ Choice of estimator to be used. Options are: 'het', which
+ is robust to heteroskedasticity, 'hom', which assumes
+ homoskedasticity, and 'kp98', which does not provide
+ inference on the spatial parameter for the error term.
+ constant_regi: string, optional
+ Switcher controlling the constant term setup. It may take
+ the following values:
+
+ * 'one': a vector of ones is appended to x and held constant across regimes.
+
+ * 'many': a vector of ones is appended to x and considered different per regime (default).
+ cols2regi : list, 'all'
+ Argument indicating whether each
+ column of x should be considered as different per regime
+ or held constant across regimes (False).
+ If a list, k booleans indicating for each variable the
+ option (True if one per regime, False to be held constant).
+ If 'all' (default), all the variables vary by regime.
+ regime_err_sep: boolean
+ If True, a separate regression is run for each regime.
+ regime_lag_sep: boolean
+ Always False, kept for consistency, ignored.
+ add_wy : boolean
+ If True, then a spatial lag of the dependent variable is included.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM or GNSM type.
+ vm : boolean
+ If True, include variance-covariance matrix in summary
+ results
+ name_y : string
+ Name of dependent variable for use in output
+ name_x : list of strings
+ Names of independent variables for use in output
+ name_w : string
+ Name of weights matrix for use in output
+ name_regimes : string
+ Name of regime variable for use in the output
+ name_yend : list of strings
+ Names of endogenous variables for use in output
+ name_q : list of strings
+ Names of instruments for use in output
+ name_ds : string
+ Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
+ **kwargs : keywords
+ Additional arguments to pass on to the estimators.
+ See the specific functions for details on what can be used.
+
+ Attributes
+ ----------
+ output : dataframe
+ regression results pandas dataframe
+ summary : string
+ Summary of regression results and diagnostics (note: use in
+ conjunction with the print command)
+ betas : array
+ kx1 array of estimated coefficients
+ u : array
+ nx1 array of residuals
+ e_filtered : array
+ nx1 array of spatially filtered residuals
+ predy : array
+ nx1 array of predicted y values
+ n : integer
+ Number of observations
+ k : integer
+ Number of variables for which coefficients are estimated
+ (including the constant)
+ y : array
+ nx1 array for dependent variable
+ x : array
+ Two dimensional array with n rows and one column for each
+ independent (exogenous) variable, including the constant
+ mean_y : float
+ Mean of dependent variable
+ std_y : float
+ Standard deviation of dependent variable
+ pr2 : float
+ Pseudo R squared (squared correlation between y and ypred)
+ vm : array
+ Variance covariance matrix (kxk)
+ sig2 : float
+ Sigma squared used in computations
+ std_err : array
+ 1xk array of standard errors of the betas
+ z_stat : list of tuples
+ z statistic; each tuple contains the pair (statistic,
+ p-value), where each is a float
+ name_y : string
+ Name of dependent variable for use in output
+ name_x : list of strings
+ Names of independent variables for use in output
+ name_w : string
+ Name of weights matrix for use in output
+ name_ds : string
+ Name of dataset for use in output
+ name_regimes : string
+ Name of regime variable for use in the output
+ title : string
+ Name of the regression method used
+ Only available in dictionary 'multi' when multiple regressions
+ (see 'multi' below for details)
+ regimes : list
+ List of n values with the mapping of each
+ observation to a regime. Assumed to be aligned with 'x'.
+ constant_regi: string
+ Ignored if regimes=False. Constant option for regimes.
+ Switcher controlling the constant term setup. It may take
+ the following values:
+ * 'one': a vector of ones is appended to x and held constant across regimes
+
+ * 'many': a vector of ones is appended to x and considered different per regime
+ cols2regi : list, 'all'
+ Ignored if regimes=False. Argument indicating whether each
+ column of x should be considered as different per regime
+ or held constant across regimes (False).
+ If a list, k booleans indicating for each variable the
+ option (True if one per regime, False to be held constant).
+ If 'all', all the variables vary by regime.
+ regime_err_sep: boolean
+ If True, a separate regression is run for each regime.
+ kr : int
+ Number of variables/columns to be "regimized" or subject
+ to change by regime. These will result in one parameter
+ estimate by regime for each variable (i.e. nr parameters per
+ variable)
+ kf : int
+ Number of variables/columns to be considered fixed or
+ global across regimes and hence only obtain one parameter
+ estimate
+ nr : int
+ Number of different regimes in the 'regimes' list
+ name_yend : list of strings (optional)
+ Names of endogenous variables for use in output
+ name_z : list of strings (optional)
+ Names of exogenous and endogenous variables for use in
+ output
+ name_q : list of strings (optional)
+ Names of external instruments
+ name_h : list of strings (optional)
+ Names of all instruments used in ouput
+ multi : dictionary
+ Only available when multiple regressions are estimated,
+ i.e. when regime_err_sep=True and no variable is fixed
+ across regimes.
+ Contains all attributes of each individual regression
+
+ Examples
+ --------
+
+ We first need to import the needed modules, namely numpy to convert the
+ data we read into arrays that ``spreg`` understands and ``libpysal`` to
+ handle the weights and file management.
+
+ >>> import numpy as np
+ >>> import libpysal
+ >>> from libpysal.examples import load_example
+
+ Open data on NCOVR US County Homicides (3085 areas) using libpysal.io.open().
+ This is the DBF associated with the NAT shapefile. Note that
+ libpysal.io.open() also reads data in CSV format; since the actual class
+ requires data to be passed in as numpy arrays, the user can read their
+ data in using any method.
+
+ >>> nat = load_example('Natregimes')
+ >>> db = libpysal.io.open(nat.get_path("natregimes.dbf"),'r')
+
+ Extract the HR90 column (homicide rates in 1990) from the DBF file and make it the
+ dependent variable for the regression. Note that PySAL requires this to be
+ an numpy array of shape (n, 1) as opposed to the also common shape of (n, )
+ that other packages accept.
+
+ >>> y_var = 'HR90'
+ >>> y = np.array([db.by_col(y_var)]).reshape(3085,1)
+
+ Extract UE90 (unemployment rate) and PS90 (population structure) vectors from
+ the DBF to be used as independent variables in the regression. Other variables
+ can be inserted by adding their names to x_var, such as x_var = ['Var1','Var2','...]
+ Note that PySAL requires this to be an nxj numpy array, where j is the
+ number of independent variables (not including a constant). By default
+ this model adds a vector of ones to the independent variables passed in.
+
+ >>> x_var = ['PS90','UE90']
+ >>> x = np.array([db.by_col(name) for name in x_var]).T
+
+ The different regimes in this data are given according to the North and
+ South dummy (SOUTH).
+
+ >>> r_var = 'SOUTH'
+ >>> regimes = db.by_col(r_var)
+
+ Since we want to run a spatial error model, we need to specify
+ the spatial weights matrix that includes the spatial configuration of the
+ observations. To do that, we can open an already existing gal file or
+ create a new one. In this case, we will create one from ``NAT.shp``.
+
+ >>> w = libpysal.weights.Rook.from_shapefile(nat.get_path("natregimes.shp"))
+
+ Unless there is a good reason not to do it, the weights have to be
+ row-standardized so every row of the matrix sums to one. Among other
+ things, this allows to interpret the spatial lag of a variable as the
+ average value of the neighboring observations. In PySAL, this can be
+ easily performed in the following way:
+
+ >>> w.transform = 'r'
+
+ The GMM_Error_Regimes class can run error models and SARAR models, that is a spatial lag+error model.
+ In this example we will run a simple version of the latter, where we have the
+ spatial effects as well as exogenous variables. Since it is a spatial
+ model, we have to pass in the weights matrix. If we want to
+ have the names of the variables printed in the output summary, we will
+ have to pass them in as well, although this is optional.
+
+ >>> from spreg import GMM_Error_Regimes
+ >>> model = GMM_Error_Regimes(y, x, regimes, w=w, add_wy=True, name_y=y_var, name_x=x_var, name_regimes=r_var, name_ds='NAT')
+
+ Once we have run the model, we can explore a little bit the output. The
+ regression object we have created has many attributes so take your time to
+ discover them.
+
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 1.461317 0.848361 1.722517 0.084976
+ 1 0_PS90 0.958711 0.239834 3.997388 0.000064
+ 2 0_UE90 0.565825 0.063726 8.879088 0.0
+ 3 1_CONSTANT 9.115738 1.976874 4.611189 0.000004
+ 4 1_PS90 1.132419 0.334107 3.389387 0.0007
+ 5 1_UE90 0.651804 0.105518 6.177197 0.0
+ 6 _Global_W_HR90 -0.458677 0.180997 -2.534173 0.011271
+ 7 lambda 0.734354 0.035255 20.829823 0.0
+
+ This class also allows the user to run a spatial lag+error model with the
+ extra feature of including non-spatial endogenous regressors. This means
+ that, in addition to the spatial lag and error, we consider some of the
+ variables on the right-hand side of the equation as endogenous and we
+ instrument for this. In this case we consider RD90 (resource deprivation)
+ as an endogenous regressor. We use FP89 (families below poverty)
+ for this and hence put it in the instruments parameter, 'q'.
+
+ >>> yd_var = ['RD90']
+ >>> yd = np.array([db.by_col(name) for name in yd_var]).T
+ >>> q_var = ['FP89']
+ >>> q = np.array([db.by_col(name) for name in q_var]).T
+
+ And then we can run and explore the model analogously to the previous combo:
+
+ >>> model = GMM_Error_Regimes(y, x, regimes, yend=yd, q=q, w=w, add_wy=True, name_y=y_var, name_x=x_var, name_yend=yd_var, name_q=q_var, name_regimes=r_var, name_ds='NAT')
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 1.461317 0.848361 1.722517 0.084976
+ 1 0_PS90 0.958711 0.239834 3.997388 0.000064
+ 2 0_UE90 0.565825 0.063726 8.879088 0.0
+ 3 1_CONSTANT 9.115738 1.976874 4.611189 0.000004
+ 4 1_PS90 1.132419 0.334107 3.389387 0.0007
+ 5 1_UE90 0.651804 0.105518 6.177197 0.0
+ 6 _Global_W_HR90 -0.458677 0.180997 -2.534173 0.011271
+ 7 lambda 0.734354 0.035255 20.829823 0.0
+
+ The class also allows for estimating a GNS model by adding spatial lags of the exogenous variables, using the argument slx_lags:
+
+ >>> model = GMM_Error_Regimes(y, x, regimes, w=w, add_wy=True, slx_lags=1, name_y=y_var, name_x=x_var, name_regimes=r_var, name_ds='NAT')
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 0.192699 0.256922 0.75003 0.453237
+ 1 0_PS90 1.098019 0.232054 4.731743 0.000002
+ 2 0_UE90 0.606622 0.07762 7.815325 0.0
+ 3 0_W_PS90 -1.068778 0.203911 -5.241381 0.0
+ 4 0_W_UE90 -0.657932 0.176073 -3.73671 0.000186
+ 5 1_CONSTANT -0.104299 1.790953 -0.058237 0.95356
+ 6 1_PS90 1.219796 0.316425 3.854936 0.000116
+ 7 1_UE90 0.678922 0.120491 5.634647 0.0
+ 8 1_W_PS90 -1.308599 0.536231 -2.440366 0.014672
+ 9 1_W_UE90 -0.708492 0.167057 -4.24102 0.000022
+ 10 _Global_W_HR90 1.033956 0.269252 3.840111 0.000123
+ 11 lambda -0.384968 0.192256 -2.002366 0.045245
+
+
+ """
+
+ def __init__(
+ self, y, x, regimes, w, yend=None, q=None, estimator='het', constant_regi="many", cols2regi="all", regime_err_sep=False,
+ regime_lag_sep=False, add_wy=False, slx_lags=0, vm=False, name_y=None, name_x=None, name_w=None, name_regimes=None, name_yend=None,
+ name_q=None, name_ds=None, latex=False, **kwargs):
+
+ if estimator == 'het':
+ if yend is None and not add_wy:
+ GM_Error_Het_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ elif yend is not None and not add_wy:
+ GM_Endog_Error_Het_Regimes.__init__(self, y=y, x=x, regimes=regimes, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ elif add_wy:
+ GM_Combo_Het_Regimes.__init__(self, y=y, x=x, regimes=regimes, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep, regime_lag_sep=regime_lag_sep,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error_Regimes not allowed. Using default arguments instead.')
+ GM_Error_Het_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex)
+ elif estimator == 'hom':
+ if yend is None and not add_wy:
+ GM_Error_Hom_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ elif yend is not None and not add_wy:
+ GM_Endog_Error_Hom_Regimes.__init__(self, y=y, x=x, regimes=regimes, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ elif add_wy:
+ GM_Combo_Hom_Regimes.__init__(self, y=y, x=x, regimes=regimes, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep, regime_lag_sep=regime_lag_sep,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error_Regimes not allowed. Using default arguments instead.')
+ GM_Error_Hom_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex)
+ elif estimator == 'kp98':
+ if yend is None and not add_wy:
+ GM_Error_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ elif yend is not None and not add_wy:
+ GM_Endog_Error_Regimes.__init__(self, y=y, x=x, regimes=regimes, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ elif add_wy:
+ GM_Combo_Regimes.__init__(self, y=y, x=x, regimes=regimes, yend=yend, q=q, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep, regime_lag_sep=regime_lag_sep,
+ name_yend=name_yend, name_q=name_q, name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex, **kwargs)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error_Regimes not allowed. Using default arguments instead.')
+ GM_Error_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex)
+ else:
+ set_warn(self, 'Combination of arguments passed to GMM_Error_Regimes not allowed. Using default arguments instead.')
+ GM_Error_Het_Regimes.__init__(self, y=y, x=x, regimes=regimes, w=w, slx_lags=slx_lags, vm=vm, name_y=name_y, name_x=name_x,
+ constant_regi=constant_regi, cols2regi=cols2regi, regime_err_sep=regime_err_sep,
+ name_w=name_w, name_regimes=name_regimes, name_ds=name_ds, latex=latex)
def _work_error(y, x, regi_ids, r, w, name_ds, name_y, name_x, name_w, name_regimes):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
@@ -1505,7 +1962,7 @@ def _work_error(y, x, regi_ids, r, w, name_ds, name_y, name_x, name_w, name_regi
model = BaseGM_Error(y_r, x_r, w_r.sparse)
set_warn(model, warn)
model.w = w_r
- model.title = "SPATIALLY WEIGHTED LEAST SQUARES ESTIMATION - REGIME %s" % r
+ model.title = "GM SPATIALLY WEIGHTED LEAST SQUARES ESTIMATION - REGIME %s" % r
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
@@ -1530,6 +1987,7 @@ def _work_endog_error(
name_w,
name_regimes,
add_lag,
+ slx_lags,
):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
y_r = y[regi_ids[r]]
@@ -1548,16 +2006,26 @@ def _work_endog_error(
if add_lag != False:
model.rho = model.betas[-2]
model.predy_e, model.e_pred, warn = sp_att(
- w_r, model.y, model.predy, model.yend[:, -1].reshape(model.n, 1), model.rho
+ w_r, model.y, model.predy, model.yend[:, -
+ 1].reshape(model.n, 1), model.rho
)
set_warn(model, warn)
model.w = w_r
- model.title = "SPATIALLY WEIGHTED TWO STAGE LEAST SQUARES - REGIME %s" % r
+ if slx_lags == 0:
+ if add_lag != False:
+ model.title = "SPATIALLY WEIGHTED 2SLS - GM-COMBO MODEL - REGIME %s" % r
+ else:
+ model.title = "SPATIALLY WEIGHTED 2SLS (GM) - REGIME %s" % r
+ else:
+ if add_lag != False:
+ model.title = "GM SPATIAL COMBO MODEL + SLX (GNSM) - REGIME %s" % r
+ else:
+ model.title = "GM SPATIALLY WEIGHTED 2SLS + SLX (SDEM) - REGIME %s" % r
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
model.name_yend = ["%s_%s" % (str(r), i) for i in name_yend]
- model.name_z = model.name_x + model.name_yend + ["lambda"]
+ model.name_z = model.name_x + model.name_yend + [str(r)+"_lambda"]
model.name_q = ["%s_%s" % (str(r), i) for i in name_q]
model.name_h = model.name_x + model.name_q
model.name_w = name_w
@@ -1575,31 +2043,34 @@ def _test():
if __name__ == "__main__":
-
_test()
- import libpysal
import numpy as np
+ import libpysal
- dbf = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
- y = np.array([dbf.by_col("CRIME")]).T
- names_to_extract = ["INC"]
- x = np.array([dbf.by_col(name) for name in names_to_extract]).T
- yd_var = ["HOVAL"]
- yend = np.array([dbf.by_col(name) for name in yd_var]).T
- q_var = ["DISCBD"]
- q = np.array([dbf.by_col(name) for name in q_var]).T
- regimes = regimes = dbf.by_col("NSA")
- w = libpysal.io.open(libpysal.examples.get_path("columbus.gal"), "r").read()
- w.transform = "r"
- model = GM_Error_Regimes(
- y,
- x,
- regimes=regimes,
- w=w,
- name_y="crime",
- name_x=["income"],
- name_regimes="nsa",
- name_ds="columbus",
- regime_err_sep=True,
- )
- print(model.summary)
+ db = libpysal.io.open(libpysal.examples.get_path('columbus.dbf'), 'r')
+ y = np.array(db.by_col("HOVAL"))
+ y = np.reshape(y, (49, 1))
+ X = []
+ X.append(db.by_col("INC"))
+ X = np.array(X).T
+ yd = []
+ yd.append(db.by_col("CRIME"))
+ yd = np.array(yd).T
+ q = []
+ q.append(db.by_col("DISCBD"))
+ q = np.array(q).T
+
+ r_var = 'NSA'
+ regimes = db.by_col(r_var)
+
+ w = libpysal.weights.Rook.from_shapefile(
+ libpysal.examples.get_path("columbus.shp"))
+ w.transform = 'r'
+ # reg = GM_Error_Regimes(y, X, regimes, w=w, name_x=['inc'], name_y='hoval', name_ds='columbus',
+ # regime_err_sep=True)
+ # reg = GM_Endog_Error_Regimes(y, X, yd, q, regimes, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ # name_q=['discbd'], name_ds='columbus', regime_err_sep=True)
+ reg = GM_Combo_Regimes(y, X, regimes, yd, q, w=w, name_x=['inc'], name_y='hoval', name_yend=['crime'],
+ name_q=['discbd'], name_ds='columbus', regime_err_sep=True, regime_lag_sep=True)
+ print(reg.output)
+ print(reg.summary)
diff --git a/spreg/ml_error.py b/spreg/ml_error.py
index 2d505324..b6913d25 100644
--- a/spreg/ml_error.py
+++ b/spreg/ml_error.py
@@ -10,12 +10,13 @@
import numpy.linalg as la
from scipy import sparse as sp
from scipy.sparse.linalg import splu as SuperLU
-from .utils import RegressionPropsY, RegressionPropsVM, set_warn
+from .utils import RegressionPropsY, RegressionPropsVM, set_warn, get_lags
from . import diagnostics as DIAG
from . import user_output as USER
-from . import summary_output as SUMMARY
from . import regimes as REGI
from .w_utils import symmetrize
+import pandas as pd
+from .output import output, _nonspat_top
try:
from scipy.optimize import minimize_scalar
@@ -310,6 +311,9 @@ class ML_Error(BaseML_Error):
independent (exogenous) variable, excluding the constant
w : Sparse matrix
Spatial weights sparse matrix
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
method : string
if 'full', brute force calculation (full matrix expressions)
if 'ord', Ord eigenvalue method
@@ -327,9 +331,13 @@ class ML_Error(BaseML_Error):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
betas : array
(k+1)x1 array of estimated coefficients (rho first)
lam : float
@@ -463,6 +471,7 @@ def __init__(
y,
x,
w,
+ slx_lags=0,
method="full",
epsilon=0.0000001,
vm=False,
@@ -470,25 +479,38 @@ def __init__(
name_x=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
x_constant, name_x, warn = USER.check_constant(x, name_x)
set_warn(self, warn)
+
+ self.title = "ML SPATIAL ERROR"
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title += " WITH SLX (SDEM)"
+ self.title += " (METHOD = " + method + ")"
+
method = method.upper()
BaseML_Error.__init__(
self, y=y, x=x_constant, w=w, method=method, epsilon=epsilon
)
- self.title = "MAXIMUM LIKELIHOOD SPATIAL ERROR" + " (METHOD = " + method + ")"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
- self.name_x = USER.set_name_x(name_x, x)
+ self.name_x = USER.set_name_x(name_x, x_constant)
self.name_x.append("lambda")
self.name_w = USER.set_name_w(name_w, w)
self.aic = DIAG.akaike(reg=self)
self.schwarz = DIAG.schwarz(reg=self)
- SUMMARY.ML_Error(reg=self, w=w, vm=vm, spat_diag=False)
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x) - 1) + ['lambda']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _nonspat_top(self, ml=True)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def err_c_loglik(lam, n, y, ylag, x, xlag, W):
@@ -565,3 +587,29 @@ def _test():
np.set_printoptions(suppress=True)
doctest.testmod()
np.set_printoptions(suppress=start_suppress)
+
+if __name__ == "__main__":
+ _test()
+
+ import numpy as np
+ import libpysal
+
+ db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ y_var = "CRIME"
+ y = np.array([db.by_col(y_var)]).reshape(49, 1)
+ x_var = ["INC"]
+ x = np.array([db.by_col(name) for name in x_var]).T
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = "r"
+ model = ML_Error(
+ y,
+ x,
+ w=w,
+ vm=False,
+ name_y=y_var,
+ name_x=x_var,
+ name_ds="columbus",
+ name_w="columbus.gal",
+ )
+ print(model.output)
+ print(model.summary)
diff --git a/spreg/ml_error_regimes.py b/spreg/ml_error_regimes.py
index 03384495..721fd115 100644
--- a/spreg/ml_error_regimes.py
+++ b/spreg/ml_error_regimes.py
@@ -9,12 +9,13 @@
import multiprocessing as mp
from . import regimes as REGI
from . import user_output as USER
-from . import summary_output as SUMMARY
from . import diagnostics as DIAG
-from .utils import set_warn
+from .utils import set_warn, get_lags
from .sputils import sphstack
from .ml_error import BaseML_Error
from platform import system
+import pandas as pd
+from .output import output, _nonspat_top
__all__ = ["ML_Error_Regimes"]
@@ -51,6 +52,9 @@ class ML_Error_Regimes(BaseML_Error, REGI.Regimes_Frame):
If 'all' (default), all the variables vary by regime.
w : Sparse matrix
Spatial weights sparse matrix
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SDEM type.
method : string
if 'full', brute force calculation (full matrix expressions)
if 'ord', Ord eigenvalue computation
@@ -78,9 +82,13 @@ class ML_Error_Regimes(BaseML_Error, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regimes variable for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -276,6 +284,7 @@ def __init__(
x,
regimes,
w=None,
+ slx_lags=0,
constant_regi="many",
cols2regi="all",
method="full",
@@ -289,14 +298,13 @@ def __init__(
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
self.constant_regi = constant_regi
- self.cols2regi = cols2regi
- self.regime_err_sep = regime_err_sep
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_w = USER.set_name_w(name_w, w)
@@ -307,9 +315,16 @@ def __init__(
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
self.name_x_r = USER.set_name_x(name_x, x_constant)
- cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x)
+ cols2regi = REGI.check_cols2regi(constant_regi, cols2regi, x_constant)
+ self.cols2regi = cols2regi
self.regimes_set = REGI._get_regimes_set(regimes)
self.regimes = regimes
USER.check_regimes(self.regimes_set, self.n, x.shape[1])
@@ -322,16 +337,18 @@ def __init__(
x_constant,
regimes,
w,
+ slx_lags,
cores,
method,
epsilon,
cols2regi,
vm,
name_x,
+ latex,
)
else:
raise Exception(
- "All coefficients must vary accross regimes if regime_err_sep = True."
+ "All coefficients must vary across regimes if regime_err_sep = True."
)
else:
x_constant = sphstack(np.ones((x_constant.shape[0], 1)), x_constant)
@@ -340,15 +357,15 @@ def __init__(
regimes_att["x"] = x_constant
regimes_att["regimes"] = regimes
regimes_att["cols2regi"] = cols2regi
- x, name_x = REGI.Regimes_Frame.__init__(
+ x, name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi=None,
cols2regi=cols2regi,
names=name_x,
+ rlist=True
)
-
BaseML_Error.__init__(
self,
y=y,
@@ -359,22 +376,26 @@ def __init__(
regimes_att=regimes_att,
)
- self.title = (
- "MAXIMUM LIKELIHOOD SPATIAL ERROR - REGIMES"
- + " (METHOD = "
- + method
- + ")"
- )
+ self.title = "ML SPATIAL ERROR"
+ if slx_lags >0:
+ self.title += " WITH SLX (SDEM)"
+ self.title += " - REGIMES (METHOD = " + method + ")"
+
self.name_x = USER.set_name_x(name_x, x, constant=True)
self.name_x.append("lambda")
self.kf += 1 # Adding a fixed k to account for lambda.
self.chow = REGI.Chow(self)
self.aic = DIAG.akaike(reg=self)
self.schwarz = DIAG.schwarz(reg=self)
- SUMMARY.ML_Error(reg=self, w=w, vm=vm, spat_diag=False, regimes=True)
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x) - 1) + ['lambda']
+ self.output['regime'] = x_rlist + ['_Global']
+ self.output['equation'] = 0
+ self.other_top = _nonspat_top(self, ml=True)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def _error_regimes_multi(
- self, y, x, regimes, w, cores, method, epsilon, cols2regi, vm, name_x
+ self, y, x, regimes, w, slx_lags, cores, method, epsilon, cols2regi, vm, name_x, latex
):
regi_ids = dict(
@@ -404,6 +425,7 @@ def _error_regimes_multi(
regi_ids,
r,
w,
+ slx_lags,
method,
epsilon,
self.name_ds,
@@ -421,6 +443,7 @@ def _error_regimes_multi(
regi_ids,
r,
w,
+ slx_lags,
method,
epsilon,
self.name_ds,
@@ -452,6 +475,7 @@ def _error_regimes_multi(
results = {}
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -482,16 +506,18 @@ def _error_regimes_multi(
] = results[r].e_filtered
self.name_y += results[r].name_y
self.name_x += results[r].name_x
+ results[r].other_top = _nonspat_top(results[r], ml=True)
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x,
+ 'var_type': ['x'] * (len(results[r].name_x) - 1) + ['lambda'],
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.chow = REGI.Chow(self)
self.multi = results
- SUMMARY.ML_Error_multi(
- reg=self, multireg=self.multi, vm=vm, spat_diag=False, regimes=True, w=w
- )
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def _work_error(
- y, x, regi_ids, r, w, method, epsilon, name_ds, name_y, name_x, name_w, name_regimes
+ y, x, regi_ids, r, w, slx_lags, method, epsilon, name_ds, name_y, name_x, name_w, name_regimes
):
w_r, warn = REGI.w_regime(w, regi_ids[r], r, transform=True)
y_r = y[regi_ids[r]]
@@ -499,13 +525,10 @@ def _work_error(
model = BaseML_Error(y=y_r, x=x_r, w=w_r, method=method, epsilon=epsilon)
set_warn(model, warn)
model.w = w_r
- model.title = (
- "MAXIMUM LIKELIHOOD SPATIAL ERROR - REGIME "
- + str(r)
- + " (METHOD = "
- + method
- + ")"
- )
+ model.title = "ML SPATIAL ERROR"
+ if slx_lags >0:
+ model.title += " WITH SLX (SDEM)"
+ model.title += " - REGIME " + str(r) + " (METHOD = " + method + ")"
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
@@ -528,30 +551,23 @@ def _test():
if __name__ == "__main__":
_test()
import numpy as np
- import libpysal
+ import libpysal as ps
- db = libpysal.io.open(libpysal.examples.get_path("baltim.dbf"), "r")
+ db = ps.io.open(ps.examples.get_path("baltim.dbf"), "r")
ds_name = "baltim.dbf"
y_name = "PRICE"
y = np.array(db.by_col(y_name)).T
y.shape = (len(y), 1)
x_names = ["NROOM", "NBATH", "PATIO", "FIREPL", "AC", "GAR", "AGE", "LOTSZ", "SQFT"]
x = np.array([db.by_col(var) for var in x_names]).T
- ww = ps.open(ps.examples.get_path("baltim_q.gal"))
+ ww = ps.io.open(ps.examples.get_path("baltim_q.gal"))
w = ww.read()
ww.close()
w_name = "baltim_q.gal"
w.transform = "r"
+ regimes = db.by_col("CITCOU")
- regimes = []
- y_coord = np.array(db.by_col("Y"))
- for i in y_coord:
- if i > 544.5:
- regimes.append("North")
- else:
- regimes.append("South")
-
- mlerror = ML_Error_Regimes(
+ model = ML_Error_Regimes(
y,
x,
regimes,
@@ -561,7 +577,9 @@ def _test():
name_x=x_names,
name_w=w_name,
name_ds=ds_name,
- regime_err_sep=False,
- name_regimes="North",
+ regime_err_sep=True,
+ constant_regi="many",
+ name_regimes="CITCOU",
)
- print(mlerror.summary)
+ print(model.output)
+ print(model.summary)
diff --git a/spreg/ml_lag.py b/spreg/ml_lag.py
old mode 100644
new mode 100755
index 7d7e2e9f..c3ec794c
--- a/spreg/ml_lag.py
+++ b/spreg/ml_lag.py
@@ -10,11 +10,12 @@
import numpy.linalg as la
from scipy import sparse as sp
from scipy.sparse.linalg import splu as SuperLU
-from .utils import RegressionPropsY, RegressionPropsVM, inverse_prod, set_warn
+from .utils import RegressionPropsY, RegressionPropsVM, inverse_prod, set_warn, get_lags
from .sputils import spdot, spfill_diagonal, spinv, spbroadcast
from . import diagnostics as DIAG
from . import user_output as USER
-from . import summary_output as SUMMARY
+import pandas as pd
+from .output import output, _nonspat_top, _spat_pseudo_r2
from .w_utils import symmetrize
from libpysal import weights
@@ -43,6 +44,9 @@ class BaseML_Lag(RegressionPropsY, RegressionPropsVM):
independent (exogenous) variable, excluding the constant
w : pysal W object
Spatial weights object
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the Spatial Durbin type.
method : string
if 'full', brute force calculation (full matrix expressions)
if 'ord', Ord eigenvalue method
@@ -179,25 +183,29 @@ class BaseML_Lag(RegressionPropsY, RegressionPropsVM):
"""
- def __init__(self, y, x, w, method="full", epsilon=0.0000001):
+ def __init__(self, y, x, w, slx_lags=0, method="full", epsilon=0.0000001):
# set up main regression variables and spatial filters
self.y = y
self.x = x
- self.n, self.k = self.x.shape
self.method = method
self.epsilon = epsilon
# W = w.full()[0]
# Wsp = w.sparse
ylag = weights.lag_spatial(w, y)
# b0, b1, e0 and e1
+
+ if slx_lags>0:
+ self.x = np.hstack((self.x, get_lags(w, self.x[:, 1:], slx_lags)))
+
+ self.n, self.k = self.x.shape
xtx = spdot(self.x.T, self.x)
xtxi = la.inv(xtx)
xty = spdot(self.x.T, self.y)
xtyl = spdot(self.x.T, ylag)
b0 = spdot(xtxi, xty)
b1 = spdot(xtxi, xtyl)
- e0 = self.y - spdot(x, b0)
- e1 = ylag - spdot(x, b1)
+ e0 = self.y - spdot(self.x, b0)
+ e1 = ylag - spdot(self.x, b1)
methodML = method.upper()
# call minimizer using concentrated log-likelihood to get rho
if methodML in ["FULL", "LU", "ORD"]:
@@ -209,19 +217,19 @@ def __init__(self, y, x, w, method="full", epsilon=0.0000001):
bounds=(-1.0, 1.0),
args=(self.n, e0, e1, W),
method="bounded",
- tol=epsilon,
+ options={'xatol': epsilon},
)
elif methodML == "LU":
I = sp.identity(w.n)
Wsp = w.sparse # moved here
- W = Wsp
+ W = Wsp#.tocsc()
res = minimize_scalar(
lag_c_loglik_sp,
0.0,
bounds=(-1.0, 1.0),
args=(self.n, e0, e1, I, Wsp),
method="bounded",
- tol=epsilon,
+ options={'xatol': epsilon},
)
elif methodML == "ORD":
# check on symmetry structure
@@ -239,7 +247,7 @@ def __init__(self, y, x, w, method="full", epsilon=0.0000001):
bounds=(-1.0, 1.0),
args=(self.n, e0, e1, evals),
method="bounded",
- tol=epsilon,
+ options={'xatol': epsilon},
)
else:
# program will crash, need to catch
@@ -261,7 +269,7 @@ def __init__(self, y, x, w, method="full", epsilon=0.0000001):
self.u = e0 - self.rho * e1
self.predy = self.y - self.u
- xb = spdot(x, b)
+ xb = spdot(self.x, b)
self.predy_e = inverse_prod(
w.sparse, xb, self.rho, inv_method="power_exp", threshold=epsilon
@@ -289,7 +297,7 @@ def __init__(self, y, x, w, method="full", epsilon=0.0000001):
wpredy = weights.lag_spatial(w, self.predy_e)
wpyTwpy = spdot(wpredy.T, wpredy)
- xTwpy = spdot(x.T, wpredy)
+ xTwpy = spdot(self.x.T, wpredy)
# order of variables is beta, rho, sigma2
@@ -321,6 +329,9 @@ class ML_Lag(BaseML_Lag):
independent (exogenous) variable, excluding the constant
w : pysal W object
Spatial weights object
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the Spatial Durbin type.
method : string
if 'full', brute force calculation (full matrix expressions)
if 'ord', Ord eigenvalue method
@@ -337,9 +348,13 @@ class ML_Lag(BaseML_Lag):
Name of weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
betas : array
(k+1)x1 array of estimated coefficients (rho first)
rho : float
@@ -567,6 +582,7 @@ def __init__(
y,
x,
w,
+ slx_lags=0,
method="full",
epsilon=0.0000001,
vm=False,
@@ -574,6 +590,7 @@ def __init__(
name_x=None,
name_w=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
@@ -582,11 +599,16 @@ def __init__(
set_warn(self, warn)
method = method.upper()
BaseML_Lag.__init__(
- self, y=y, x=x_constant, w=w, method=method, epsilon=epsilon
+ self, y=y, x=x_constant, w=w, slx_lags=slx_lags, method=method, epsilon=epsilon
)
# increase by 1 to have correct aic and sc, include rho in count
self.k += 1
- self.title = "MAXIMUM LIKELIHOOD SPATIAL LAG" + " (METHOD = " + method + ")"
+
+ if slx_lags>0:
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ self.title = "MAXIMUM LIKELIHOOD SPATIAL LAG WITH SLX - SPATIAL DURBIN MODEL" + " (METHOD = " + method + ")"
+ else:
+ self.title = "MAXIMUM LIKELIHOOD SPATIAL LAG" + " (METHOD = " + method + ")"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
self.name_x = USER.set_name_x(name_x, x)
@@ -595,8 +617,12 @@ def __init__(
self.name_w = USER.set_name_w(name_w, w)
self.aic = DIAG.akaike(reg=self)
self.schwarz = DIAG.schwarz(reg=self)
- SUMMARY.ML_Lag(reg=self, w=w, vm=vm, spat_diag=False)
-
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x)-1) + ['rho']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _spat_pseudo_r2(self)
+ self.other_top += _nonspat_top(self, ml=True)
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def lag_c_loglik(rho, n, e0, e1, W):
# concentrated log-lik for lag model, no constants, brute force
@@ -647,3 +673,29 @@ def _test():
np.set_printoptions(suppress=True)
doctest.testmod()
np.set_printoptions(suppress=start_suppress)
+
+if __name__ == "__main__":
+ _test()
+
+ import numpy as np
+ import libpysal
+
+ db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ y_var = "CRIME"
+ y = np.array([db.by_col(y_var)]).reshape(49, 1)
+ x_var = ["INC"]
+ x = np.array([db.by_col(name) for name in x_var]).T
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w.transform = "r"
+ model = ML_Lag(
+ y,
+ x,
+ w=w,
+ vm=False,
+ name_y=y_var,
+ name_x=x_var,
+ name_ds="columbus",
+ name_w="columbus.gal",
+ )
+ print(model.output)
+ print(model.summary)
diff --git a/spreg/ml_lag_regimes.py b/spreg/ml_lag_regimes.py
index ec9bfe5e..a05c00b2 100644
--- a/spreg/ml_lag_regimes.py
+++ b/spreg/ml_lag_regimes.py
@@ -7,12 +7,14 @@
import numpy as np
from . import regimes as REGI
from . import user_output as USER
-from . import summary_output as SUMMARY
from . import diagnostics as DIAG
import multiprocessing as mp
from .ml_lag import BaseML_Lag
-from .utils import set_warn
+from .utils import set_warn, get_lags
from platform import system
+import pandas as pd
+from .output import output, _nonspat_top, _spat_pseudo_r2
+
__all__ = ["ML_Lag_Regimes"]
@@ -55,6 +57,9 @@ class ML_Lag_Regimes(BaseML_Lag, REGI.Regimes_Frame):
if 'LU', LU sparse matrix decomposition
epsilon : float
tolerance criterion in mimimize_scalar function and inverse_product
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the Spatial Durbin type.
regime_lag_sep: boolean
If True, the spatial parameter for spatial lag is also
computed according to different regimes. If False (default),
@@ -76,9 +81,13 @@ class ML_Lag_Regimes(BaseML_Lag, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regimes variable for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -297,8 +306,8 @@ def __init__(
cols2regi="all",
method="full",
epsilon=0.0000001,
+ slx_lags=0,
regime_lag_sep=False,
- regime_err_sep=False,
cores=False,
vm=False,
name_y=None,
@@ -306,6 +315,7 @@ def __init__(
name_w=None,
name_ds=None,
name_regimes=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
@@ -318,7 +328,12 @@ def __init__(
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
- self.name_x_r = name_x + [USER.set_name_yend_sp(name_y)]
+ if slx_lags >0:
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
+ self.name_x_r = USER.set_name_x(name_x, x_constant) + [USER.set_name_yend_sp(name_y)]
self.method = method
self.epsilon = epsilon
self.name_regimes = USER.set_name_ds(name_regimes)
@@ -364,6 +379,7 @@ def __init__(
w_i,
w,
regi_ids,
+ slx_lags=slx_lags,
cores=cores,
cols2regi=cols2regi,
method=method,
@@ -374,17 +390,19 @@ def __init__(
name_regimes=self.name_regimes,
name_w=name_w,
name_ds=name_ds,
+ latex=latex,
)
else:
# if regime_lag_sep == True:
# w = REGI.w_regimes_union(w, w_i, self.regimes_set)
- x, self.name_x = REGI.Regimes_Frame.__init__(
+ x, self.name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi,
cols2regi=cols2regi[:-1],
names=name_x,
+ rlist=True
)
self.name_x.append("_Global_" + USER.set_name_yend_sp(name_y))
BaseML_Lag.__init__(self, y=y, x=x, w=w, method=method, epsilon=epsilon)
@@ -395,13 +413,17 @@ def __init__(
self.aic = DIAG.akaike(reg=self)
self.schwarz = DIAG.schwarz(reg=self)
self.regime_lag_sep = regime_lag_sep
- self.title = (
- "MAXIMUM LIKELIHOOD SPATIAL LAG - REGIMES"
- + " (METHOD = "
- + method
- + ")"
- )
- SUMMARY.ML_Lag(reg=self, w=w, vm=vm, spat_diag=False, regimes=True)
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * (len(self.name_x) - 1) + ['rho']
+ self.output['regime'] = x_rlist+['_Global']
+ self.output['equation'] = 0
+ self.other_top = _spat_pseudo_r2(self)
+ self.other_top += _nonspat_top(self, ml=True)
+ if slx_lags == 0:
+ self.title = ("MAXIMUM LIKELIHOOD SPATIAL LAG - REGIMES"+ " (METHOD = "+ method+ ")")
+ else:
+ self.title = ("MAXIMUM LIKELIHOOD SPATIAL DURBIN - REGIMES"+ " (METHOD = "+ method+ ")")
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def ML_Lag_Regimes_Multi(
self,
@@ -410,6 +432,7 @@ def ML_Lag_Regimes_Multi(
w_i,
w,
regi_ids,
+ slx_lags,
cores,
cols2regi,
method,
@@ -420,8 +443,9 @@ def ML_Lag_Regimes_Multi(
name_regimes,
name_w,
name_ds,
+ latex,
):
- # pool = mp.Pool(cores)
+ #pool = mp.Pool(cores)
results_p = {}
"""
for r in self.regimes_set:
@@ -445,6 +469,7 @@ def ML_Lag_Regimes_Multi(
regi_ids,
r,
w_i[r],
+ slx_lags,
method,
epsilon,
name_ds,
@@ -462,6 +487,7 @@ def ML_Lag_Regimes_Multi(
regi_ids,
r,
w_i[r],
+ slx_lags,
method,
epsilon,
name_ds,
@@ -496,6 +522,7 @@ def ML_Lag_Regimes_Multi(
results = {}
self.name_y, self.name_x = [], []
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -528,12 +555,16 @@ def ML_Lag_Regimes_Multi(
] = results[r].e_pred
self.name_y += results[r].name_y
self.name_x += results[r].name_x
+ results[r].other_top = _spat_pseudo_r2(results[r])
+ results[r].other_top += _nonspat_top(results[r], ml=True)
+ results[r].other_mid = ""
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x,
+ 'var_type': ['x'] * (len(results[r].name_x) - 1) + ['rho'],
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.multi = results
self.chow = REGI.Chow(self)
- SUMMARY.ML_Lag_multi(
- reg=self, multireg=self.multi, vm=vm, spat_diag=False, regimes=True, w=w
- )
+ output(reg=self, vm=vm, robust=False, other_end=False, latex=latex)
def _work(
@@ -542,6 +573,7 @@ def _work(
regi_ids,
r,
w_r,
+ slx_lags,
method,
epsilon,
name_ds,
@@ -553,13 +585,10 @@ def _work(
y_r = y[regi_ids[r]]
x_r = x[regi_ids[r]]
model = BaseML_Lag(y_r, x_r, w_r, method=method, epsilon=epsilon)
- model.title = (
- "MAXIMUM LIKELIHOOD SPATIAL LAG - REGIME "
- + str(r)
- + " (METHOD = "
- + method
- + ")"
- )
+ if slx_lags == 0:
+ model.title = ("MAXIMUM LIKELIHOOD SPATIAL LAG - REGIME "+ str(r)+ " (METHOD = "+ method+ ")")
+ else:
+ model.title = ("MAXIMUM LIKELIHOOD SPATIAL DURBIN - REGIME "+ str(r)+ " (METHOD = "+ method+ ")")
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
model.name_x = ["%s_%s" % (str(r), i) for i in name_x]
@@ -583,16 +612,16 @@ def _test():
if __name__ == "__main__":
_test()
import numpy as np
- import libpysal
+ import libpysal as ps
- db = libpysal.io.open(libpysal.examples.get_path("baltim.dbf"), "r")
+ db = ps.io.open(ps.examples.get_path("baltim.dbf"), "r")
ds_name = "baltim.dbf"
y_name = "PRICE"
y = np.array(db.by_col(y_name)).T
y.shape = (len(y), 1)
x_names = ["NROOM", "NBATH", "PATIO", "FIREPL", "AC", "GAR", "AGE", "LOTSZ", "SQFT"]
x = np.array([db.by_col(var) for var in x_names]).T
- ww = ps.open(ps.examples.get_path("baltim_q.gal"))
+ ww = ps.io.open(ps.examples.get_path("baltim_q.gal"))
w = ww.read()
ww.close()
w_name = "baltim_q.gal"
@@ -610,7 +639,9 @@ def _test():
name_w=w_name,
name_ds=ds_name,
regime_lag_sep=True,
+ regime_err_sep=False,
constant_regi="many",
name_regimes="CITCOU",
)
+ print(mllag.output)
print(mllag.summary)
diff --git a/spreg/ols.py b/spreg/ols.py
index eb739230..f22bac19 100644
--- a/spreg/ols.py
+++ b/spreg/ols.py
@@ -1,13 +1,13 @@
"""Ordinary Least Squares regression classes."""
-__author__ = "Luc Anselin luc.anselin@asu.edu, David C. Folch david.folch@asu.edu"
+__author__ = "Luc Anselin lanselin@gmail.com, Pedro Amaral pedrovma@gmail.com, David C. Folch david.folch@asu.edu"
import numpy as np
-import copy as COPY
import numpy.linalg as la
from . import user_output as USER
-from . import summary_output as SUMMARY
+from .output import output, _spat_diag_out, _nonspat_mid, _nonspat_top
from . import robust as ROBUST
-from .utils import spdot, sphstack, RegressionPropsY, RegressionPropsVM, set_warn
+from .utils import spdot, RegressionPropsY, RegressionPropsVM, set_warn, get_lags
+import pandas as pd
__all__ = ["OLS"]
@@ -144,6 +144,9 @@ class OLS(BaseOLS):
gwk : pysal W object
Kernel spatial weights needed for HAC estimation. Note:
matrix must have ones along the main diagonal.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SLX type.
sig2n_k : boolean
If True, then use n-k to estimate sigma^2. If False, use n.
nonspat_diag : boolean
@@ -171,10 +174,13 @@ class OLS(BaseOLS):
Name of kernel weights matrix for use in output
name_ds : string
Name of dataset for use in output
-
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -349,8 +355,9 @@ class OLS(BaseOLS):
ready to be printed:
>>> print(ols.summary)
- REGRESSION
- ----------
+ REGRESSION RESULTS
+ ------------------
+
SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES
-----------------------------------------
Data set : columbus
@@ -360,7 +367,7 @@ class OLS(BaseOLS):
S.D. dependent var : 18.4661 Degrees of Freedom : 46
R-squared : 0.3495
Adjusted R-squared : 0.3212
- Sum squared residual: 10647.015 F-statistic : 12.3582
+ Sum squared residual: 10647 F-statistic : 12.3582
Sigma-square : 231.457 Prob(F-statistic) : 5.064e-05
S.E. of regression : 15.214 Log likelihood : -201.368
Sigma-square ML : 217.286 Akaike info criterion : 408.735
@@ -426,6 +433,7 @@ def __init__(
w=None,
robust=None,
gwk=None,
+ slx_lags = 0,
sig2n_k=True,
nonspat_diag=True,
spat_diag=False,
@@ -437,34 +445,57 @@ def __init__(
name_w=None,
name_gwk=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
- USER.check_weights(w, y)
USER.check_robust(robust, gwk)
+ if robust == "hac" and spat_diag:
+ set_warn(
+ self,
+ "Spatial diagnostics are not available for HAC estimation. Hence, spatial diagnostics have been disabled for this model.",
+ )
+ spat_diag = False
+ if robust in ["hac", "white"] and white_test:
+ set_warn(
+ self,
+ "White test not available when standard errors are estimated by HAC or White correction.",
+ )
+ white_test = False
USER.check_spat_diag(spat_diag, w)
x_constant, name_x, warn = USER.check_constant(x, name_x)
+ self.name_x = USER.set_name_x(name_x, x_constant)
+ if slx_lags >0:
+ USER.check_weights(w, y, w_required=True)
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ self.name_x += USER.set_name_spatial_lags(self.name_x[1:], slx_lags)
+ else:
+ USER.check_weights(w, y, w_required=False)
set_warn(self, warn)
BaseOLS.__init__(
self, y=y, x=x_constant, robust=robust, gwk=gwk, sig2n_k=sig2n_k
)
- self.title = "ORDINARY LEAST SQUARES"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
- self.name_x = USER.set_name_x(name_x, x_constant)
+ self.title = "ORDINARY LEAST SQUARES"
+ if slx_lags > 0:
+ self.title += " WITH SPATIALLY LAGGED X (SLX)"
self.robust = USER.set_robust(robust)
self.name_w = USER.set_name_w(name_w, w)
self.name_gwk = USER.set_name_w(name_gwk, gwk)
- SUMMARY.OLS(
- reg=self,
- vm=vm,
- w=w,
- nonspat_diag=nonspat_diag,
- spat_diag=spat_diag,
- moran=moran,
- white_test=white_test,
- )
+ self.output = pd.DataFrame(self.name_x, columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x)
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top, self.other_mid, other_end = ("", "", "") # strings where function-specific diag. are stored
+ if nonspat_diag:
+ self.other_mid += _nonspat_mid(self, white_test=white_test)
+ self.other_top += _nonspat_top(self)
+ if spat_diag:
+ other_end += _spat_diag_out(self, w, 'ols', moran=moran)
+ output(reg=self, vm=vm, robust=robust, other_end=other_end, latex=latex)
+
def _test():
@@ -505,4 +536,5 @@ def _test():
sig2n_k=True,
moran=True,
)
+ print(ols.output)
print(ols.summary)
diff --git a/spreg/ols_regimes.py b/spreg/ols_regimes.py
index bf06f1f2..20b2acea 100755
--- a/spreg/ols_regimes.py
+++ b/spreg/ols_regimes.py
@@ -2,23 +2,20 @@
Ordinary Least Squares regression with regimes.
"""
-__author__ = "Luc Anselin luc.anselin@asu.edu, Pedro V. Amaral pedro.amaral@asu.edu, Daniel Arribas-Bel darribas@asu.edu"
+__author__ = "Luc Anselin, Pedro V. Amaral, Daniel Arribas-Bel"
+import numpy as np
+import multiprocessing as mp
+import pandas as pd
from . import regimes as REGI
from . import user_output as USER
+from .utils import set_warn, RegressionProps_basic, spdot, RegressionPropsY, get_lags
from .ols import BaseOLS
-from .utils import set_warn, spbroadcast, RegressionProps_basic, RegressionPropsY, spdot
from .robust import hac_multi
-from . import summary_output as SUMMARY
-import numpy as np
-import multiprocessing as mp
-from platform import system
-import scipy.sparse as SP
-import copy as COPY
+from .output import output, _spat_diag_out, _nonspat_mid, _nonspat_top
class OLS_Regimes(BaseOLS, REGI.Regimes_Frame, RegressionPropsY):
-
"""
Ordinary least squares with results and diagnostics.
@@ -43,6 +40,10 @@ class OLS_Regimes(BaseOLS, REGI.Regimes_Frame, RegressionPropsY):
gwk : pysal W object
Kernel spatial weights needed for HAC estimation. Note:
matrix must have ones along the main diagonal.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SLX type.
+ Note: WX is computed using the complete weights matrix
sig2n_k : boolean
If True, then use n-k to estimate sigma^2. If False, use n.
nonspat_diag : boolean
@@ -92,10 +93,13 @@ class OLS_Regimes(BaseOLS, REGI.Regimes_Frame, RegressionPropsY):
Name of dataset for use in output
name_regimes : string
Name of regime variable for use in the output
-
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -307,7 +311,7 @@ class OLS_Regimes(BaseOLS, REGI.Regimes_Frame, RegressionPropsY):
>>> y_var = 'HR90'
>>> y = db.by_col(y_var)
- >>> y = np.array(y).reshape(len(y), 1)
+ >>> y = np.array(y)
Extract UE90 (unemployment rate) and PS90 (population structure) vectors from
the DBF to be used as independent variables in the regression. Other variables
@@ -327,58 +331,122 @@ class OLS_Regimes(BaseOLS, REGI.Regimes_Frame, RegressionPropsY):
We can now run the regression and then have a summary of the output
by typing: olsr.summary
- Alternatively, we can just check the betas and standard errors of the
- parameters:
>>> olsr = OLS_Regimes(y, x, regimes, nonspat_diag=False, name_y=y_var, name_x=['PS90','UE90'], name_regimes=r_var, name_ds='NAT')
- >>> olsr.betas
- array([[0.39642899],
- [0.65583299],
- [0.48703937],
- [5.59835 ],
- [1.16210453],
- [0.53163886]])
- >>> np.sqrt(olsr.vm.diagonal())
- array([0.24816345, 0.09662678, 0.03628629, 0.46894564, 0.21667395,
- 0.05945651])
- >>> olsr.cols2regi
- 'all'
+ >>> print(olsr.summary)
+ REGRESSION RESULTS
+ ------------------
+
+ SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 0
+ ---------------------------------------------------------------
+ Data set : NAT
+ Weights matrix : None
+ Dependent Variable : 0_HR90 Number of Observations: 1673
+ Mean dependent var : 3.3416 Number of Variables : 3
+ S.D. dependent var : 4.6795 Degrees of Freedom : 1670
+ R-squared : 0.1271
+ Adjusted R-squared : 0.1260
+
+ ------------------------------------------------------------------------------------
+ Variable Coefficient Std.Error t-Statistic Probability
+ ------------------------------------------------------------------------------------
+ 0_CONSTANT 0.3964290 0.2481634 1.5974512 0.1103544
+ 0_PS90 0.6558330 0.0966268 6.7872800 0.0000000
+ 0_UE90 0.4870394 0.0362863 13.4221336 0.0000000
+ ------------------------------------------------------------------------------------
+ Regimes variable: SOUTH
+
+ SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES ESTIMATION - REGIME 1
+ ---------------------------------------------------------------
+ Data set : NAT
+ Weights matrix : None
+ Dependent Variable : 1_HR90 Number of Observations: 1412
+ Mean dependent var : 9.5493 Number of Variables : 3
+ S.D. dependent var : 7.0389 Degrees of Freedom : 1409
+ R-squared : 0.0661
+ Adjusted R-squared : 0.0647
+
+ ------------------------------------------------------------------------------------
+ Variable Coefficient Std.Error t-Statistic Probability
+ ------------------------------------------------------------------------------------
+ 1_CONSTANT 5.5983500 0.4689456 11.9381640 0.0000000
+ 1_PS90 1.1621045 0.2166740 5.3633790 0.0000001
+ 1_UE90 0.5316389 0.0594565 8.9416422 0.0000000
+ ------------------------------------------------------------------------------------
+ Regimes variable: SOUTH
+ ------------------------------------------------------------------------------------
+ GLOBAL DIAGNOSTICS
+
+ REGIMES DIAGNOSTICS - CHOW TEST
+ VARIABLE DF VALUE PROB
+ CONSTANT 1 96.129 0.0000
+ PS90 1 4.554 0.0328
+ UE90 1 0.410 0.5220
+ Global test 3 680.960 0.0000
+ ================================ END OF REPORT =====================================
"""
def __init__(
- self,
- y,
- x,
- regimes,
- w=None,
- robust=None,
- gwk=None,
- sig2n_k=True,
- nonspat_diag=True,
- spat_diag=False,
- moran=False,
- white_test=False,
- vm=False,
- constant_regi="many",
- cols2regi="all",
- regime_err_sep=True,
- cores=False,
- name_y=None,
- name_x=None,
- name_regimes=None,
- name_w=None,
- name_gwk=None,
- name_ds=None,
+ self,
+ y,
+ x,
+ regimes,
+ w=None,
+ robust=None,
+ gwk=None,
+ slx_lags=0,
+ sig2n_k=True,
+ nonspat_diag=True,
+ spat_diag=False,
+ moran=False,
+ white_test=False,
+ vm=False,
+ constant_regi="many",
+ cols2regi="all",
+ regime_err_sep=True,
+ cores=False,
+ name_y=None,
+ name_x=None,
+ name_regimes=None,
+ name_w=None,
+ name_gwk=None,
+ name_ds=None,
+ latex=False
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
- USER.check_weights(w, y)
USER.check_robust(robust, gwk)
+ if robust == "hac":
+ if regime_err_sep:
+ set_warn(
+ self,
+ "Error by regimes is not available for HAC estimation. The error by regimes has been disabled for this model.",
+ )
+ regime_err_sep = False
+ if spat_diag:
+ set_warn(
+ self,
+ "Spatial diagnostics are not available for HAC estimation. The spatial diagnostics have been disabled for this model.",
+ )
+ spat_diag = False
+ if robust in ["hac", "white"] and white_test:
+ set_warn(
+ self,
+ "White test not available when standard errors are estimated by HAC or White correction.",
+ )
+ white_test = False
USER.check_spat_diag(spat_diag, w)
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
- set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+ if slx_lags > 0:
+ USER.check_weights(w, y, w_required=True)
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ else:
+ USER.check_weights(w, y, w_required=False)
+ set_warn(self, warn)
self.name_x_r = USER.set_name_x(name_x, x_constant)
self.constant_regi = constant_regi
self.cols2regi = cols2regi
@@ -394,17 +462,11 @@ def __init__(
self.regimes_set = REGI._get_regimes_set(regimes)
self.regimes = regimes
USER.check_regimes(self.regimes_set, self.n, x_constant.shape[1])
- if regime_err_sep == True and robust == "hac":
- set_warn(
- self,
- "Error by regimes is incompatible with HAC estimation. Hence, error by regimes has been disabled for this model.",
- )
- regime_err_sep = False
self.regime_err_sep = regime_err_sep
if (
- regime_err_sep == True
- and set(cols2regi) == set([True])
- and constant_regi == "many"
+ regime_err_sep == True
+ and set(cols2regi) == set([True])
+ and constant_regi == "many"
):
self.y = y
regi_ids = dict(
@@ -416,6 +478,7 @@ def __init__(
regi_ids,
cores,
gwk,
+ slx_lags,
sig2n_k,
robust,
nonspat_diag,
@@ -424,11 +487,19 @@ def __init__(
name_x,
moran,
white_test,
+ latex
)
else:
- x, self.name_x = REGI.Regimes_Frame.__init__(
- self, x_constant, regimes, constant_regi, cols2regi, name_x
+ x, self.name_x, x_rlist = REGI.Regimes_Frame.__init__(
+ self, x_constant, regimes, constant_regi, cols2regi, name_x, rlist=True
)
+
+ self.output = pd.DataFrame(self.name_x,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x)
+ self.output['regime'] = x_rlist
+ self.output['equation'] = 0
+
BaseOLS.__init__(self, y=y, x=x, robust=robust, gwk=gwk, sig2n_k=sig2n_k)
if regime_err_sep == True and robust == None:
y2, x2 = REGI._get_weighted_var(
@@ -439,41 +510,45 @@ def __init__(
self.title = (
"ORDINARY LEAST SQUARES - REGIMES (Group-wise heteroskedasticity)"
)
+ if slx_lags > 0:
+ self.title = "ORDINARY LEAST SQUARES WITH SLX - REGIMES (Group-wise heteroskedasticity)"
nonspat_diag = None
set_warn(
self,
"Residuals treated as homoskedastic for the purpose of diagnostics.",
)
else:
- self.title = "ORDINARY LEAST SQUARES - REGIMES"
+ if slx_lags == 0:
+ self.title = "ORDINARY LEAST SQUARES - REGIMES"
+ else:
+ self.title = "ORDINARY LEAST SQUARES WITH SLX - REGIMES"
self.robust = USER.set_robust(robust)
self.chow = REGI.Chow(self)
- SUMMARY.OLS(
- reg=self,
- vm=vm,
- w=w,
- nonspat_diag=nonspat_diag,
- spat_diag=spat_diag,
- moran=moran,
- white_test=white_test,
- regimes=True,
- )
+ self.other_top, self.other_mid, other_end = ("", "", "") # strings where function-specific diag. are stored
+ if nonspat_diag:
+ self.other_mid += _nonspat_mid(self, white_test=white_test)
+ self.other_top += _nonspat_top(self)
+ if spat_diag:
+ other_end += _spat_diag_out(self, w, 'ols', moran=moran)
+ output(reg=self, vm=vm, robust=robust, other_end=other_end, latex=latex)
def _ols_regimes_multi(
- self,
- x,
- w,
- regi_ids,
- cores,
- gwk,
- sig2n_k,
- robust,
- nonspat_diag,
- spat_diag,
- vm,
- name_x,
- moran,
- white_test,
+ self,
+ x,
+ w,
+ regi_ids,
+ cores,
+ gwk,
+ slx_lags,
+ sig2n_k,
+ robust,
+ nonspat_diag,
+ spat_diag,
+ vm,
+ name_x,
+ moran,
+ white_test,
+ latex
):
results_p = {}
"""
@@ -506,6 +581,7 @@ def _ols_regimes_multi(
name_x,
self.name_w,
self.name_regimes,
+ slx_lags
),
)
else:
@@ -523,6 +599,7 @@ def _ols_regimes_multi(
name_x,
self.name_w,
self.name_regimes,
+ slx_lags
)
)
self.kryd = 0
@@ -545,6 +622,7 @@ def _ols_regimes_multi(
results = {}
self.name_y, self.name_x = [], []
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -558,11 +636,11 @@ def _ols_regimes_multi(
results[r] = results_p[r].get()
self.vm[
- (counter * self.kr) : ((counter + 1) * self.kr),
- (counter * self.kr) : ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
] = results[r].vm
self.betas[
- (counter * self.kr) : ((counter + 1) * self.kr),
+ (counter * self.kr): ((counter + 1) * self.kr),
] = results[r].betas
self.u[
regi_ids[r],
@@ -572,25 +650,24 @@ def _ols_regimes_multi(
] = results[r].predy
self.name_y += results[r].name_y
self.name_x += results[r].name_x
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x,
+ 'var_type': ['x']*len(results[r].name_x),
+ 'regime': r, 'equation': r})], ignore_index=True)
+ results[r].other_top, results[r].other_mid = ("", "")
+ if nonspat_diag:
+ results[r].other_mid += _nonspat_mid(results[r], white_test=white_test)
+ results[r].other_top += _nonspat_top(results[r])
counter += 1
self.multi = results
self.hac_var = x_constant[:, 1:]
if robust == "hac":
hac_multi(self, gwk)
self.chow = REGI.Chow(self)
+ other_end = ""
if spat_diag:
self._get_spat_diag_props(x_constant, sig2n_k)
- SUMMARY.OLS_multi(
- reg=self,
- multireg=self.multi,
- vm=vm,
- nonspat_diag=nonspat_diag,
- spat_diag=spat_diag,
- moran=moran,
- white_test=white_test,
- regimes=True,
- w=w,
- )
+ other_end += _spat_diag_out(self, w, 'ols', moran=moran)
+ output(reg=self, vm=vm, robust=robust, other_end=other_end, latex=latex)
def _get_spat_diag_props(self, x, sig2n_k):
self.k = self.kr
@@ -603,7 +680,7 @@ def _get_spat_diag_props(self, x, sig2n_k):
def _work(
- y, x, w, regi_ids, r, robust, sig2n_k, name_ds, name_y, name_x, name_w, name_regimes
+ y, x, w, regi_ids, r, robust, sig2n_k, name_ds, name_y, name_x, name_w, name_regimes, slx_lags
):
y_r = y[regi_ids[r]]
x_r = x[regi_ids[r]]
@@ -612,7 +689,10 @@ def _work(
if robust == "hac":
robust = None
model = BaseOLS(y_r, x_r, robust=robust, sig2n_k=sig2n_k)
- model.title = "ORDINARY LEAST SQUARES ESTIMATION - REGIME %s" % r
+ if slx_lags == 0:
+ model.title = "ORDINARY LEAST SQUARES ESTIMATION - REGIME %s" % r
+ else:
+ model.title = "ORDINARY LEAST SQUARES ESTIMATION WITH SLX - REGIME %s" % r
model.robust = USER.set_robust(robust)
model.name_ds = name_ds
model.name_y = "%s_%s" % (str(r), name_y)
@@ -639,32 +719,35 @@ def _test():
_test()
import numpy as np
import libpysal
+ import pysal
db = libpysal.io.open(libpysal.examples.get_path("NAT.dbf"), "r")
- y_var = "CRIME"
- y = np.array([db.by_col(y_var)]).reshape(49, 1)
- x_var = ["INC", "HOVAL"]
+ y_var = "HR90"
+ y = np.array(db.by_col(y_var)).reshape(-1,1)
+ x_var = ['PS90','UE90']
x = np.array([db.by_col(name) for name in x_var]).T
- r_var = "NSA"
+ r_var = "SOUTH"
regimes = db.by_col(r_var)
- w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("NAT.shp"))
w.transform = "r"
+ #olsr = pysal.model.spreg.OLS_Regimes(
olsr = OLS_Regimes(
- y,
+ y,
x,
regimes,
w=w,
constant_regi="many",
- nonspat_diag=False,
- spat_diag=False,
+ nonspat_diag=True,
+ spat_diag=True,
name_y=y_var,
- name_x=["INC", "HOVAL"],
- name_ds="columbus",
+ name_x=x_var,
+ name_ds="NAT",
name_regimes=r_var,
- name_w="columbus.gal",
regime_err_sep=True,
cols2regi=[True, True],
- sig2n_k=True,
- robust="white",
+ sig2n_k=False,
+ white_test=True,
+ #robust="white"
)
+ print(olsr.output)
print(olsr.summary)
diff --git a/spreg/output.py b/spreg/output.py
new file mode 100644
index 00000000..25f94e66
--- /dev/null
+++ b/spreg/output.py
@@ -0,0 +1,478 @@
+"""Internal helper files for user output."""
+
+__author__ = "Luc Anselin, Pedro V. Amaral"
+
+import textwrap as TW
+import numpy as np
+import pandas as pd
+from . import diagnostics as diagnostics
+from . import diagnostics_tsls as diagnostics_tsls
+from . import diagnostics_sp as diagnostics_sp
+
+__all__ = []
+
+###############################################################################
+############### Primary functions for running summary diagnostics #############
+###############################################################################
+
+def output(reg, vm, other_end=False, robust=False, latex=False):
+ if latex:
+ print("Warning: Latex output not implemented yet. Using standard output instead.")
+ strSummary = output_start(reg)
+ for eq in reg.output['equation'].unique():
+ try:
+ reg.multi[eq].__summary = {}
+ strSummary, reg.multi[eq] = out_part_top(strSummary, reg, eq)
+ except:
+ eq = None
+ strSummary, reg = out_part_top(strSummary, reg, eq)
+ strSummary, reg = out_part_middle(strSummary, reg, robust, m=eq)
+ strSummary, reg = out_part_end(strSummary, reg, vm, other_end, m=eq)
+ reg.summary = strSummary
+ reg.output.sort_values(by=['equation', 'regime'], inplace=True)
+ reg.output.drop(['var_type', 'regime', 'equation'], axis=1, inplace=True)
+
+def output_start(reg):
+ reg.__summary = {}
+ strSummary = "REGRESSION RESULTS\n"
+ strSummary += "------------------\n"
+ reg.output = reg.output.assign(coefficients=[None] * len(reg.output), std_err=[None] * len(reg.output),
+ zt_stat=[None] * len(reg.output), prob=[None] * len(reg.output))
+ return strSummary
+
+def out_part_top(strSummary, reg, m):
+ # Top part of summary output.
+ # m = None for single models, m = 1,2,3... for multiple equation models
+ if m == None:
+ _reg = reg # _reg = local object with regression results
+ else:
+ _reg = reg.multi[m] # _reg = local object with equation specific regression results
+ title = "\nSUMMARY OF OUTPUT: " + _reg.title + "\n"
+ strSummary += title
+ strSummary += "-" * (len(title) - 2) + "\n"
+ strSummary += "%-20s:%12s\n" % ("Data set", _reg.name_ds)
+ try:
+ strSummary += "%-20s:%12s\n" % ("Weights matrix", _reg.name_w)
+ except:
+ pass
+
+ strSummary += "%-20s:%12s %-22s:%12d\n" % (
+ "Dependent Variable",
+ _reg.name_y,
+ "Number of Observations",
+ _reg.n,
+ )
+
+ strSummary += "%-20s:%12.4f %-22s:%12d\n" % (
+ "Mean dependent var",
+ _reg.mean_y,
+ "Number of Variables",
+ _reg.k,
+ )
+ strSummary += "%-20s:%12.4f %-22s:%12d\n" % (
+ "S.D. dependent var",
+ _reg.std_y,
+ "Degrees of Freedom",
+ _reg.n - _reg.k,
+ )
+
+ _reg.std_err = diagnostics.se_betas(_reg)
+ if 'OLS' in reg.__class__.__name__:
+ _reg.t_stat = diagnostics.t_stat(_reg)
+ _reg.r2 = diagnostics.r2(_reg)
+ _reg.ar2 = diagnostics.ar2(_reg)
+ strSummary += "%-20s:%12.4f\n%-20s:%12.4f\n" % (
+ "R-squared",
+ _reg.r2,
+ "Adjusted R-squared",
+ _reg.ar2,
+ )
+ _reg.__summary["summary_zt"] = "t"
+
+ else:
+ _reg.z_stat = diagnostics.t_stat(_reg, z_stat=True)
+ _reg.pr2 = diagnostics_tsls.pr2_aspatial(_reg)
+ strSummary += "%-20s:%12.4f\n" % ("Pseudo R-squared", _reg.pr2)
+ _reg.__summary["summary_zt"] = "z"
+
+ try: # Adding additional top part if there is one
+ strSummary += _reg.other_top
+ except:
+ pass
+
+ return (strSummary, _reg)
+
+def out_part_middle(strSummary, reg, robust, m=None):
+ # Middle part of summary output.
+ # m = None for single models, m = 1,2,3... for multiple equation models
+ if m==None:
+ _reg = reg #_reg = local object with regression results
+ m = reg.output['equation'].unique()[0]
+ else:
+ _reg = reg.multi[m] #_reg = local object with equation specific regression results
+ coefs = pd.DataFrame(_reg.betas, columns=['coefficients'])
+ coefs['std_err'] = pd.DataFrame(_reg.std_err)
+ try:
+ coefs = pd.concat([coefs, pd.DataFrame(_reg.z_stat, columns=['zt_stat', 'prob'])], axis=1)
+ except AttributeError:
+ coefs = pd.concat([coefs, pd.DataFrame(_reg.t_stat, columns=['zt_stat', 'prob'])], axis=1)
+ coefs.index = reg.output[reg.output['equation'] == m].index
+ reg.output.update(coefs)
+ strSummary += "\n"
+ if robust:
+ if robust == "white":
+ strSummary += "White Standard Errors\n"
+ elif robust == "hac":
+ strSummary += "HAC Standard Errors; Kernel Weights: " + _reg.name_gwk + "\n"
+ elif robust == "ogmm":
+ strSummary += "Optimal GMM used to estimate the coefficients and the variance-covariance matrix\n"
+ strSummary += "------------------------------------------------------------------------------------\n"
+ strSummary += (
+ " Variable Coefficient Std.Error %1s-Statistic Probability\n"
+ % (_reg.__summary["summary_zt"])
+ )
+ strSummary += "------------------------------------------------------------------------------------\n"
+ m_output = reg.output[reg.output['equation'] == m]
+ for row in m_output.iloc[np.lexsort((m_output.index, m_output['regime']))].itertuples():
+ try:
+ strSummary += "%20s %12.5f %12.5f %12.5f %12.5f\n" % (
+ row.var_names,
+ row.coefficients,
+ row.std_err,
+ row.zt_stat,
+ row.prob
+ )
+ except TypeError: # special case for models that do not have inference on the lambda term
+ strSummary += "%20s %12.5f \n" % (
+ row.var_names,
+ row.coefficients
+ )
+ strSummary += "------------------------------------------------------------------------------------\n"
+
+ try: # Adding info on instruments if they are present
+ name_q = _reg.name_q
+ name_yend = _reg.name_yend
+ insts = "Instruments: "
+ for name in sorted(name_q):
+ insts += name + ", "
+ text_wrapper = TW.TextWrapper(width=76, subsequent_indent=" ")
+ insts = text_wrapper.fill(insts[:-2])
+ insts += "\n"
+ inst2 = "Instrumented: "
+ for name in sorted(name_yend):
+ inst2 += name + ", "
+ text_wrapper = TW.TextWrapper(width=76, subsequent_indent=" ")
+ inst2 = text_wrapper.fill(inst2[:-2])
+ inst2 += "\n"
+ inst2 += insts
+ strSummary += inst2
+ except:
+ pass
+
+ try: # Adding info on regimes if they are present
+ strSummary += ("Regimes variable: %s\n" % _reg.name_regimes)
+ strSummary += _summary_chow(_reg) # If local regimes present, compute Chow test.
+ except:
+ pass
+
+ try: # Adding local warning if there is one
+ if _reg.warning:
+ strSummary += _reg.warning
+ except:
+ pass
+
+ try: # Adding other middle part if there are any
+ strSummary += _reg.other_mid
+ except:
+ pass
+
+ return (strSummary, reg)
+
+def out_part_end(strSummary, reg, vm, other_end, m=None):
+ if m is not None:
+ strSummary += "------------------------------------------------------------------------------------\n"
+ try: # Adding global warning if there is one
+ strSummary += reg.warning
+ except:
+ pass
+ strSummary += "\nGLOBAL DIAGNOSTICS\n"
+ try: # Adding global Chow test if there is one
+ strSummary += _summary_chow(reg)
+ except:
+ pass
+ if other_end:
+ strSummary += other_end
+ if vm:
+ strSummary += _summary_vm(reg)
+ strSummary += "================================ END OF REPORT ====================================="
+ return (strSummary, reg)
+
+def _summary_chow(reg):
+ sum_text = "\nREGIMES DIAGNOSTICS - CHOW TEST"
+ name_x_r = reg.name_x_r
+ joint, regi = reg.chow.joint, reg.chow.regi
+ sum_text += "\n VARIABLE DF VALUE PROB\n"
+ if reg.cols2regi == "all":
+ names_chow = name_x_r[1:]
+ else:
+ names_chow = [name_x_r[1:][i] for i in np.where(reg.cols2regi)[0]]
+ if reg.constant_regi == "many":
+ names_chow = ["CONSTANT"] + names_chow
+
+ if 'lambda' in reg.output.var_type.values:
+ if reg.output.var_type.value_counts()['lambda'] > 1:
+ names_chow += ["lambda"]
+
+ reg.output_chow = pd.DataFrame()
+ reg.output_chow['var_names'] = names_chow
+ reg.output_chow['df'] = reg.nr - 1
+ reg.output_chow = pd.concat([reg.output_chow, pd.DataFrame(regi, columns=['value', 'prob'])], axis=1)
+ reg.output_chow = pd.concat([reg.output_chow, pd.DataFrame([{'var_names': 'Global test',
+ 'df': reg.kr * (reg.nr - 1),
+ 'value': joint[0], 'prob': joint[1]}])], ignore_index=True)
+ for row in reg.output_chow.itertuples():
+ sum_text += "%25s %2d %12.3f %9.4f\n" % (
+ row.var_names,
+ row.df,
+ row.value,
+ row.prob
+ )
+
+ return sum_text
+
+
+def _spat_diag_out(reg, w, type, moran=False):
+ strSummary = "\nDIAGNOSTICS FOR SPATIAL DEPENDENCE\n"
+ if not moran:
+ strSummary += (
+ "TEST DF VALUE PROB\n"
+ )
+ else:
+ strSummary += (
+ "TEST MI/DF VALUE PROB\n"
+ )
+
+ cache = diagnostics_sp.spDcache(reg, w)
+ if type == "yend":
+ mi, ak, ak_p = diagnostics_sp.akTest(reg, w, cache)
+ reg.ak_test = ak, ak_p
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Anselin-Kelejian Test",
+ 1,
+ reg.ak_test[0],
+ reg.ak_test[1],
+ )
+ elif type == "ols":
+ lm_tests = diagnostics_sp.LMtests(reg, w)
+ reg.lm_error = lm_tests.lme
+ reg.lm_lag = lm_tests.lml
+ reg.rlm_error = lm_tests.rlme
+ reg.rlm_lag = lm_tests.rlml
+ reg.lm_sarma = lm_tests.sarma
+ if moran:
+ moran_res = diagnostics_sp.MoranRes(reg, w, z=True)
+ reg.moran_res = moran_res.I, moran_res.zI, moran_res.p_norm
+ strSummary += "%-27s %8.4f %9.3f %9.4f\n" % (
+ "Moran's I (error)",
+ reg.moran_res[0],
+ reg.moran_res[1],
+ reg.moran_res[2],
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Lagrange Multiplier (lag)",
+ 1,
+ reg.lm_lag[0],
+ reg.lm_lag[1],
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Robust LM (lag)",
+ 1,
+ reg.rlm_lag[0],
+ reg.rlm_lag[1],
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Lagrange Multiplier (error)",
+ 1,
+ reg.lm_error[0],
+ reg.lm_error[1],
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Robust LM (error)",
+ 1,
+ reg.rlm_error[0],
+ reg.rlm_error[1],
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n\n" % (
+ "Lagrange Multiplier (SARMA)",
+ 2,
+ reg.lm_sarma[0],
+ reg.lm_sarma[1],
+ )
+ return strSummary
+
+def _nonspat_top(reg, ml=False):
+ if not ml:
+ reg.sig2ML = reg.sig2n
+ reg.f_stat = diagnostics.f_stat(reg)
+ reg.logll = diagnostics.log_likelihood(reg)
+ reg.aic = diagnostics.akaike(reg)
+ reg.schwarz = diagnostics.schwarz(reg)
+
+ strSummary = "%-20s:%12.6g %-22s:%12.4f\n" % (
+ "Sum squared residual", reg.utu, "F-statistic", reg.f_stat[0],)
+ strSummary += "%-20s:%12.3f %-22s:%12.4g\n" % (
+ "Sigma-square",
+ reg.sig2,
+ "Prob(F-statistic)",
+ reg.f_stat[1],
+ )
+ strSummary += "%-20s:%12.3f %-22s:%12.3f\n" % (
+ "S.E. of regression",
+ np.sqrt(reg.sig2),
+ "Log likelihood",
+ reg.logll,
+ )
+ strSummary += "%-20s:%12.3f %-22s:%12.3f\n" % (
+ "Sigma-square ML",
+ reg.sig2ML,
+ "Akaike info criterion",
+ reg.aic,
+ )
+ strSummary += "%-20s:%12.4f %-22s:%12.3f\n" % (
+ "S.E of regression ML",
+ np.sqrt(reg.sig2ML),
+ "Schwarz criterion",
+ reg.schwarz,
+ )
+ else:
+ strSummary = "%-20s:%12.4f\n" % (
+ "Log likelihood",
+ reg.logll,
+ )
+ strSummary += "%-20s:%12.4f %-22s:%12.3f\n" % (
+ "Sigma-square ML",
+ reg.sig2,
+ "Akaike info criterion",
+ reg.aic,
+ )
+ strSummary += "%-20s:%12.4f %-22s:%12.3f\n" % (
+ "S.E of regression",
+ np.sqrt(reg.sig2),
+ "Schwarz criterion",
+ reg.schwarz,
+ )
+
+ return strSummary
+
+def _nonspat_mid(reg, white_test=False):
+ # compute diagnostics
+ reg.mulColli = diagnostics.condition_index(reg)
+ reg.jarque_bera = diagnostics.jarque_bera(reg)
+ reg.breusch_pagan = diagnostics.breusch_pagan(reg)
+ reg.koenker_bassett = diagnostics.koenker_bassett(reg)
+
+ if white_test:
+ reg.white = diagnostics.white(reg)
+
+ strSummary = "\nREGRESSION DIAGNOSTICS\n"
+ if reg.mulColli:
+ strSummary += "MULTICOLLINEARITY CONDITION NUMBER %16.3f\n\n" % (reg.mulColli)
+ strSummary += "TEST ON NORMALITY OF ERRORS\n"
+ strSummary += "TEST DF VALUE PROB\n"
+ strSummary += "%-27s %2d %14.3f %9.4f\n\n" % (
+ "Jarque-Bera",
+ reg.jarque_bera["df"],
+ reg.jarque_bera["jb"],
+ reg.jarque_bera["pvalue"],
+ )
+ strSummary += "DIAGNOSTICS FOR HETEROSKEDASTICITY\n"
+ strSummary += "RANDOM COEFFICIENTS\n"
+ strSummary += "TEST DF VALUE PROB\n"
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Breusch-Pagan test",
+ reg.breusch_pagan["df"],
+ reg.breusch_pagan["bp"],
+ reg.breusch_pagan["pvalue"],
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "Koenker-Bassett test",
+ reg.koenker_bassett["df"],
+ reg.koenker_bassett["kb"],
+ reg.koenker_bassett["pvalue"],
+ )
+ try:
+ if reg.white:
+ strSummary += "\nSPECIFICATION ROBUST TEST\n"
+ if len(reg.white) > 3:
+ strSummary += reg.white + "\n"
+ else:
+ strSummary += (
+ "TEST DF VALUE PROB\n"
+ )
+ strSummary += "%-27s %2d %12.3f %9.4f\n" % (
+ "White",
+ reg.white["df"],
+ reg.white["wh"],
+ reg.white["pvalue"],
+ )
+ except:
+ pass
+ return strSummary
+
+def _spat_pseudo_r2(reg):
+ if np.abs(reg.rho) < 1:
+ reg.pr2_e = diagnostics_tsls.pr2_spatial(reg)
+ strSummary = "%-20s: %5.4f\n" % ("Spatial Pseudo R-squared", reg.pr2_e)
+ else:
+ strSummary = "Spatial Pseudo R-squared: omitted due to rho outside the boundary (-1, 1).\n"
+ return strSummary
+
+def _summary_vm(reg):
+ strVM = "\n"
+ strVM += "COEFFICIENTS VARIANCE MATRIX\n"
+ strVM += "----------------------------\n"
+ try:
+ for name in reg.name_z:
+ strVM += "%12s" % (name)
+ except:
+ for name in reg.name_x:
+ strVM += "%12s" % (name)
+ strVM += "\n"
+ nrow = reg.vm.shape[0]
+ ncol = reg.vm.shape[1]
+ for i in range(nrow):
+ for j in range(ncol):
+ strVM += "%12.6f" % (reg.vm[i][j])
+ strVM += "\n"
+ return strVM
+
+def _summary_iteration(reg):
+ """Reports the number of iterations computed and the type of estimator used for hom and het models."""
+ try:
+ niter = reg.niter
+ except:
+ niter = reg.iteration
+
+ txt = "%-20s:%12s\n" % ("N. of iterations", niter)
+
+ try:
+ if reg.step1c:
+ step1c = "Yes"
+ else:
+ step1c = "No"
+ txt = txt[:-1] + " %-22s:%12s\n" % (
+ "Step1c computed",
+ step1c,
+ )
+ except:
+ pass
+
+ try:
+ txt = txt[:-1] + " %-22s:%12s" % (
+ "A1 type: ",
+ reg.A1,
+ )
+ except:
+ pass
+
+ return txt
diff --git a/spreg/regimes.py b/spreg/regimes.py
index fad91d71..d0c4db06 100755
--- a/spreg/regimes.py
+++ b/spreg/regimes.py
@@ -3,8 +3,6 @@
import scipy.sparse as SP
import itertools as iter
from scipy.stats import f, chi2
-
-chisqprob = chi2.sf
import itertools as iter
import numpy.linalg as la
from .utils import spbroadcast, set_warn
@@ -186,6 +184,10 @@ class Regimes_Frame:
If 'all' (default), all the variables vary by regime.
names : None, list of strings
Names of independent variables for use in output
+ yend : boolean
+ If True, the last columns of cols2regi are considered for endogenous variables
+ rlist : boolean
+ If True, returns a list with the regimes indicators for each variable
Returns
-------
@@ -212,7 +214,7 @@ class Regimes_Frame:
"""
- def __init__(self, x, regimes, constant_regi, cols2regi, names=None, yend=False):
+ def __init__(self, x, regimes, constant_regi, cols2regi, names=None, yend=False, rlist=False):
if cols2regi == "all":
cols2regi = [True] * x.shape[1]
else:
@@ -228,8 +230,8 @@ def __init__(self, x, regimes, constant_regi, cols2regi, names=None, yend=False)
cols2regi.insert(0, True)
else:
raise Exception(
- "Invalid argument (%s) passed for 'constant_regi'. Please secify a valid term."
- % str(constant)
+ "Invalid argument (%s) passed for 'constant_regi'. Please specify a valid term."
+ % str(constant_regi)
)
try:
x = regimeX_setup(
@@ -252,12 +254,18 @@ def __init__(self, x, regimes, constant_regi, cols2regi, names=None, yend=False)
self.kryd = 0
self.nr = len(set(regimes))
- if names:
- names = set_name_x_regimes(
- names, regimes, constant_regi, cols2regi, self.regimes_set
- )
-
- return (x, names)
+ if rlist:
+ if names:
+ names, r_list = set_name_x_regimes(
+ names, regimes, constant_regi, cols2regi, self.regimes_set, rlist
+ )
+ return (x, names, r_list)
+ else:
+ if names:
+ names = set_name_x_regimes(
+ names, regimes, constant_regi, cols2regi, self.regimes_set
+ )
+ return (x, names)
def wald_test(betas, r, q, vm):
@@ -290,7 +298,7 @@ def wald_test(betas, r, q, vm):
rvri = la.inv(np.dot(r, np.dot(vm, r.T)))
w = np.dot(rbq.T, np.dot(rvri, rbq))[0][0]
df = r.shape[0]
- pvalue = chisqprob(w, df)
+ pvalue = chi2.sf(w, df)
return w, pvalue
@@ -425,7 +433,7 @@ def regimeX_setup(x, regimes, cols2regi, regimes_set, constant=False):
return xsp
-def set_name_x_regimes(name_x, regimes, constant_regi, cols2regi, regimes_set):
+def set_name_x_regimes(name_x, regimes, constant_regi, cols2regi, regimes_set, rlist=False):
"""
Generate the set of variable names in a regimes setup, according to the
order of the betas
@@ -475,11 +483,17 @@ def set_name_x_regimes(name_x, regimes, constant_regi, cols2regi, regimes_set):
vars_regi = nxa[np.where(c2ra == True)]
vars_glob = nxa[np.where(c2ra == False)]
name_x_regi = []
+ r_list = []
for r in regimes_set:
rl = ["%s_%s" % (str(r), i) for i in vars_regi]
name_x_regi.extend(rl)
+ r_list.extend([str(r)] * len(rl))
name_x_regi.extend(["_Global_%s" % i for i in vars_glob])
- return name_x_regi
+ r_list.extend(["_Global"] * len(vars_glob))
+ if rlist:
+ return (name_x_regi, r_list)
+ else:
+ return name_x_regi
def w_regime(w, regi_ids, regi_i, transform=True, min_n=None):
diff --git a/spreg/sp_panels.py b/spreg/sp_panels.py
index ab88ea94..68d170a2 100644
--- a/spreg/sp_panels.py
+++ b/spreg/sp_panels.py
@@ -25,6 +25,7 @@ class BaseGM_KKP(RegressionPropsY):
'''
Base GMM method for a spatial random effects panel model based on
Kapoor, Kelejian and Prucha (2007) :cite:`KKP2007`.
+
Parameters
----------
y : array
@@ -120,6 +121,7 @@ class GM_KKP(BaseGM_KKP, REGI.Regimes_Frame):
'''
GMM method for a spatial random effects panel model based on
Kapoor, Kelejian and Prucha (2007) :cite:`KKP2007`.
+
Parameters
----------
y : array
@@ -356,6 +358,7 @@ def _moments_kkp(ws, u, i, trace_w2=None):
"""
Compute G and g matrices for the KKP model.
...
+
Parameters
----------
ws : Sparse matrix
diff --git a/spreg/summary_output.py b/spreg/summary_output.py
index 6be95ec1..627b3f73 100755
--- a/spreg/summary_output.py
+++ b/spreg/summary_output.py
@@ -459,7 +459,7 @@ def GM_Error_Hom(reg, vm, w, regimes=False):
# build coefficients table body
beta_position = summary_coefs_allx(reg, reg.z_stat, lambd=True)
if regimes:
- summary_coefs_lambda(reg, reg.z_stat)
+ #summary_coefs_lambda(reg, reg.z_stat)
summary_regimes(reg)
summary_warning(reg)
summary(reg=reg, vm=vm, instruments=False, nonspat_diag=False, spat_diag=False)
@@ -501,7 +501,7 @@ def GM_Endog_Error_Hom(reg, vm, w, regimes=False):
summary_coefs_allx(reg, reg.z_stat, lambd=True)
summary_coefs_instruments(reg)
if regimes:
- summary_coefs_lambda(reg, reg.z_stat)
+ #summary_coefs_lambda(reg, reg.z_stat)
summary_regimes(reg)
summary_warning(reg)
summary(reg=reg, vm=vm, instruments=True, nonspat_diag=False, spat_diag=False)
@@ -543,7 +543,7 @@ def GM_Error_Het(reg, vm, w, regimes=False):
# build coefficients table body
beta_position = summary_coefs_allx(reg, reg.z_stat, lambd=True)
if regimes:
- summary_coefs_lambda(reg, reg.z_stat)
+ #summary_coefs_lambda(reg, reg.z_stat)
summary_regimes(reg)
summary_warning(reg)
summary(reg=reg, vm=vm, instruments=False, nonspat_diag=False, spat_diag=False)
@@ -585,7 +585,7 @@ def GM_Endog_Error_Het(reg, vm, w, regimes=False):
summary_coefs_allx(reg, reg.z_stat, lambd=True)
summary_coefs_instruments(reg)
if regimes:
- summary_coefs_lambda(reg, reg.z_stat)
+ #summary_coefs_lambda(reg, reg.z_stat)
summary_regimes(reg)
summary_warning(reg)
summary(reg=reg, vm=vm, instruments=True, nonspat_diag=False, spat_diag=False)
@@ -671,7 +671,7 @@ def GM_Combo_Hom(reg, vm, w, regimes=False):
summary_coefs_allx(reg, reg.z_stat, lambd=True)
summary_coefs_instruments(reg)
if regimes:
- summary_coefs_lambda(reg, reg.z_stat)
+ #summary_coefs_lambda(reg, reg.z_stat)
summary_regimes(reg)
summary_warning(reg)
summary(reg=reg, vm=vm, instruments=True, nonspat_diag=False, spat_diag=False)
@@ -715,7 +715,7 @@ def GM_Combo_Het(reg, vm, w, regimes=False):
summary_coefs_allx(reg, reg.z_stat, lambd=True)
summary_coefs_instruments(reg)
if regimes:
- summary_coefs_lambda(reg, reg.z_stat)
+ #summary_coefs_lambda(reg, reg.z_stat)
summary_regimes(reg)
summary_warning(reg)
summary(reg=reg, vm=vm, instruments=True, nonspat_diag=False, spat_diag=False)
@@ -1182,7 +1182,7 @@ def _get_var_indices(reg, zt_stat, lambd=False):
try:
kf = reg.kf
if lambd:
- kf += -len(zt_stat) - len(reg.betas)
+ kf += len(zt_stat) - len(reg.betas)
krex = reg.kr - reg.kryd
try:
kfyd = reg.yend.shape[1] - reg.nr * reg.kryd
@@ -1194,6 +1194,8 @@ def _get_var_indices(reg, zt_stat, lambd=False):
for i in range(reg.nr):
j = i * krex
jyd = krex * reg.nr + i * reg.kryd + kf - kfyd
+ if len(zt_stat) == len(reg.betas) and lambd:
+ jyd += -1 #discount lambda as fixed coefficient in this counter
name_reg = var_names[j + j_con : j + krex] + var_names[jyd : jyd + reg.kryd]
# name_reg.sort()
if reg.constant_regi == "many":
@@ -1203,10 +1205,13 @@ def _get_var_indices(reg, zt_stat, lambd=False):
if reg.constant_regi == "one":
indices += [krex * reg.nr]
if len(indices) < last_v:
- name_reg = (
+ if len(indices) - last_v == -1 and reg.kryd>0 and lambd:
+ name_reg = ['lambda']
+ else:
+ name_reg = (
var_names[krex * reg.nr + 1 - j_con : krex * reg.nr + kf - kfyd]
- + var_names[reg.kr * reg.nr + kf - kfyd : reg.kr * reg.nr + kf]
- )
+ + var_names[reg.kr * reg.nr + kf - kfyd : reg.kr * reg.nr + kf])
+
# name_reg.sort()
indices += [var_names.index(ind) for ind in name_reg]
except:
diff --git a/spreg/sur_error.py b/spreg/sur_error.py
index 4e2ed4ff..ddcb6164 100644
--- a/spreg/sur_error.py
+++ b/spreg/sur_error.py
@@ -36,7 +36,8 @@
class BaseSURerrorGM:
- """Base class for SUR Error estimation by Generalized Moment Estimation.
+
+ """Base class for SUR Error estimation by Generalized Moments
Parameters
----------
@@ -158,7 +159,7 @@ def _momentsGM_sur_Error(w, u):
class SURerrorGM(BaseSURerrorGM, REGI.Regimes_Frame):
"""
- User class for SUR Error estimation by Maximum Likelihood.
+ User class for SUR Error estimation by Generalized Moments
Parameters
----------
@@ -556,7 +557,7 @@ def __init__(self, bigy, bigX, w, epsilon=0.0000001):
bigE = sur_resids(self.bigy, self.bigX, b1)
res = minimize(
clik,
- lam,
+ np.array(lam).flatten(),
args=(self.n, self.n2, self.n_eq, bigE, I, WS),
method="L-BFGS-B",
bounds=lambdabounds,
@@ -1104,3 +1105,47 @@ def surerrvm(n, n_eq, w, lam, sig):
vm = la.inv(vbig)
return vm
+
+
+def _test():
+ import doctest
+
+ start_suppress = np.get_printoptions()["suppress"]
+ np.set_printoptions(suppress=True)
+ doctest.testmod()
+ np.set_printoptions(suppress=start_suppress)
+
+
+if __name__ == "__main__":
+ _test()
+ import numpy as np
+ import libpysal
+ from .sur_utils import sur_dictxy, sur_dictZ
+ from libpysal.examples import load_example
+ from libpysal.weights import Queen
+
+ nat = load_example("Natregimes")
+ db = libpysal.io.open(nat.get_path("natregimes.dbf"), "r")
+ y_var = ["HR80", "HR90"]
+ x_var = [["PS80", "UE80"], ["PS90", "UE90"]]
+ w = Queen.from_shapefile(nat.get_path("natregimes.shp"))
+ w.transform = "r"
+ bigy0, bigX0, bigyvars0, bigXvars0 = sur_dictxy(db, y_var, x_var)
+ reg0 = SURerrorML(
+ bigy0,
+ bigX0,
+ w,
+ # regimes=regimes,
+ name_bigy=bigyvars0,
+ name_bigX=bigXvars0,
+ name_w="natqueen",
+ name_ds="natregimes",
+ vm=True,
+ nonspat_diag=True,
+ spat_diag=True,
+ )
+
+ # reg0 = SURerrorGM(bigy0,bigX0,w,regimes=regimes,name_bigy=bigyvars0,name_bigX=bigXvars0,\
+ # name_w="natqueen",name_ds="natregimes",vm=False,nonspat_diag=True,spat_diag=False)
+
+ print(reg0.summary)
diff --git a/spreg/sur_utils.py b/spreg/sur_utils.py
index 50dc7341..bb78d3c8 100644
--- a/spreg/sur_utils.py
+++ b/spreg/sur_utils.py
@@ -290,7 +290,9 @@ def sur_dict2mat(dicts):
"""
n_dicts = len(dicts.keys())
- mat = np.vstack((dicts[t] for t in range(n_dicts)))
+ #mat = np.vstack((dicts[t] for t in range(n_dicts)))
+ mat = np.vstack([dicts[t] for t in range(n_dicts)])
+
return mat
@@ -392,10 +394,11 @@ def sur_est(bigXX, bigXy, bigE, bigK):
for t in range(n_eq):
sxy = sxy + sigi[r, t] * bigXy[(r, t)]
sigiXy[r] = sxy
- xsigy = np.vstack((sigiXy[t] for t in range(n_eq)))
- xsigx = np.vstack(
- ((np.hstack(sigiXX[(r, t)] for t in range(n_eq))) for r in range(n_eq))
- )
+ #xsigy = np.vstack((sigiXy[t] for t in range(n_eq)))
+ xsigy = np.vstack(tuple(sigiXy[t] for t in range(n_eq)))
+ #xsigx = np.vstack(((np.hstack(sigiXX[(r, t)] for t in range(n_eq))) for r in range(n_eq)))
+ array_lists = [[sigiXX[(r, t)] for t in range(n_eq)] for r in range(n_eq)]
+ xsigx = np.vstack([np.hstack(arr_list) for arr_list in array_lists])
varb = la.inv(xsigx)
beta = np.dot(varb, xsigy)
bSUR = sur_mat2dict(beta, bigK)
@@ -423,7 +426,9 @@ def sur_resids(bigy, bigX, beta):
"""
n_eq = len(bigy.keys())
- bigE = np.hstack((bigy[r] - spdot(bigX[r], beta[r])) for r in range(n_eq))
+ #bigE = np.hstack((bigy[r] - spdot(bigX[r], beta[r])) for r in range(n_eq))
+ bigE = np.hstack(tuple(bigy[r] - spdot(bigX[r], beta[r]) for r in range(n_eq)))
+
return bigE
@@ -449,7 +454,9 @@ def sur_predict(bigy, bigX, beta):
"""
n_eq = len(bigy.keys())
- bigYP = np.hstack(spdot(bigX[r], beta[r]) for r in range(n_eq))
+ #bigYP = np.hstack(spdot(bigX[r], beta[r]) for r in range(n_eq))
+ bigYP = np.hstack([spdot(bigX[r], beta[r]) for r in range(n_eq)])
+
return bigYP
diff --git a/spreg/tests/test_error_sp.py b/spreg/tests/test_error_sp.py
index 610d25bf..c87999af 100644
--- a/spreg/tests/test_error_sp.py
+++ b/spreg/tests/test_error_sp.py
@@ -6,129 +6,104 @@
from spreg import utils
from libpysal.common import RTOL
-
class TestBaseGMError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X.append(db.by_col("CRIME"))
self.X = np.array(X).T
- self.X = np.hstack((np.ones(self.y.shape), self.X))
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.X = np.hstack((np.ones(self.y.shape),self.X))
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.BaseGM_Error(self.y, self.X, self.w.sparse)
- betas = np.array([[47.94371455], [0.70598088], [-0.55571746], [0.37230161]])
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([27.4739775])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 47.94371455], [ 0.70598088], [ -0.55571746], [ 0.37230161]])
+ np.testing.assert_allclose(reg.betas,betas,RTOL)
+ u = np.array([ 27.4739775])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x[0], x, RTOL)
- e = np.array([31.89620319])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.x[0],x,RTOL)
+ e = np.array([ 31.89620319])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array(
- [
- [1.51884943e02, -5.37622793e00, -1.86970286e00],
- [-5.37622793e00, 2.48972661e-01, 5.26564244e-02],
- [-1.86970286e00, 5.26564244e-02, 3.18930650e-02],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([[ 1.51884943e+02, -5.37622793e+00, -1.86970286e+00], [ -5.37622793e+00, 2.48972661e-01, 5.26564244e-02], [ -1.86970286e+00, 5.26564244e-02, 3.18930650e-02]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
sig2 = 191.73716465732355
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
-
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
class TestGMError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X.append(db.by_col("CRIME"))
self.X = np.array(X).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.GM_Error(self.y, self.X, self.w)
- betas = np.array([[47.94371455], [0.70598088], [-0.55571746], [0.37230161]])
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([27.4739775])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 47.94371455], [ 0.70598088], [ -0.55571746], [ 0.37230161]])
+ np.testing.assert_allclose(reg.betas,betas,RTOL)
+ u = np.array([ 27.4739775])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x[0], x, RTOL)
- e = np.array([31.89620319])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.x[0],x,RTOL)
+ e = np.array([ 31.89620319])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array(
- [
- [1.51884943e02, -5.37622793e00, -1.86970286e00],
- [-5.37622793e00, 2.48972661e-01, 5.26564244e-02],
- [-1.86970286e00, 5.26564244e-02, 3.18930650e-02],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([[ 1.51884943e+02, -5.37622793e+00, -1.86970286e+00], [ -5.37622793e+00, 2.48972661e-01, 5.26564244e-02], [ -1.86970286e+00, 5.26564244e-02, 3.18930650e-02]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
sig2 = 191.73716465732355
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
pr2 = 0.3495097406012179
- np.testing.assert_allclose(reg.pr2, pr2)
- std_err = np.array([12.32416094, 0.4989716, 0.1785863])
- np.testing.assert_allclose(reg.std_err, std_err, RTOL)
- z_stat = np.array(
- [
- [3.89022140e00, 1.00152805e-04],
- [1.41487186e00, 1.57106070e-01],
- [-3.11175868e00, 1.85976455e-03],
- ]
- )
- np.testing.assert_allclose(reg.z_stat, z_stat, RTOL)
-
+ np.testing.assert_allclose(reg.pr2,pr2)
+ std_err = np.array([ 12.32416094, 0.4989716 , 0.1785863 ])
+ np.testing.assert_allclose(reg.std_err,std_err,RTOL)
+ z_stat = np.array([[ 3.89022140e+00, 1.00152805e-04], [ 1.41487186e+00, 1.57106070e-01], [ -3.11175868e+00, 1.85976455e-03]])
+ np.testing.assert_allclose(reg.z_stat,z_stat,RTOL)
class TestBaseGMEndogError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
self.X = np.array(X).T
- self.X = np.hstack((np.ones(self.y.shape), self.X))
+ self.X = np.hstack((np.ones(self.y.shape),self.X))
yd = []
yd.append(db.by_col("CRIME"))
self.yd = np.array(yd).T
@@ -136,55 +111,50 @@ def setUp(self):
q.append(db.by_col("DISCBD"))
self.q = np.array(q).T
self.w = weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
- self.w.transform = "r"
+ self.w.transform = 'r'
def test_model(self):
reg = SP.BaseGM_Endog_Error(self.y, self.X, self.yd, self.q, self.w.sparse)
- betas = np.array([[55.36095292], [0.46411479], [-0.66883535], [0.38989939]])
- # raising a warning causes a failure...
- print("Running reduced precision test in L120 of test_error_sp.py")
- np.testing.assert_allclose(reg.betas, betas, RTOL + 0.0001)
- u = np.array([26.55951566])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e = np.array([31.23925425])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([53.9074875])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 55.36095292], [ 0.46411479], [ -0.66883535], [ 0.38989939]])
+ #raising a warning causes a failure...
+ print('Running reduced precision test in L120 of test_error_sp.py')
+ np.testing.assert_allclose(reg.betas,betas,RTOL+.0001)
+ u = np.array([ 26.55951566])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ e = np.array([ 31.23925425])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 53.9074875])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531])
- np.testing.assert_allclose(reg.x[0], x, RTOL)
- yend = np.array([15.72598])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.z[0], z, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531])
+ np.testing.assert_allclose(reg.x[0],x,RTOL)
+ yend = np.array([ 15.72598])
+ np.testing.assert_allclose(reg.yend[0],yend,RTOL)
+ z = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.z[0],z,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
- # std_y
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
+ #std_y
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- # vm
- vm = np.array(
- [
- [5.29158422e02, -1.57833675e01, -8.38021080e00],
- [-1.57833675e01, 5.40235041e-01, 2.31120327e-01],
- [-8.38021080e00, 2.31120327e-01, 1.44977385e-01],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ #vm
+ vm = np.array([[ 5.29158422e+02, -1.57833675e+01, -8.38021080e+00],
+ [ -1.57833675e+01, 5.40235041e-01, 2.31120327e-01],
+ [ -8.38021080e+00, 2.31120327e-01, 1.44977385e-01]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
sig2 = 192.50022721929574
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
-
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
class TestGMEndogError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
self.X = np.array(X).T
@@ -194,180 +164,105 @@ def setUp(self):
q = []
q.append(db.by_col("DISCBD"))
self.q = np.array(q).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.GM_Endog_Error(self.y, self.X, self.yd, self.q, self.w)
- betas = np.array([[55.36095292], [0.46411479], [-0.66883535], [0.38989939]])
- print("Running reduced precision test in L175 of test_error_sp.py")
- np.testing.assert_allclose(reg.betas, betas, RTOL + 0.0001)
- u = np.array([26.55951566])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e = np.array([31.23925425])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([53.9074875])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 55.36095292], [ 0.46411479], [ -0.66883535], [ 0.38989939]])
+ print('Running reduced precision test in L175 of test_error_sp.py')
+ np.testing.assert_allclose(reg.betas,betas,RTOL +.0001)
+ u = np.array([ 26.55951566])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ e = np.array([ 31.23925425])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 53.9074875])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531])
- np.testing.assert_allclose(reg.x[0], x, RTOL)
- yend = np.array([15.72598])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.z[0], z, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531])
+ np.testing.assert_allclose(reg.x[0],x,RTOL)
+ yend = np.array([ 15.72598])
+ np.testing.assert_allclose(reg.yend[0],yend,RTOL)
+ z = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.z[0],z,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array(
- [
- [5.29158422e02, -1.57833675e01, -8.38021080e00],
- [-1.57833675e01, 5.40235041e-01, 2.31120327e-01],
- [-8.38021080e00, 2.31120327e-01, 1.44977385e-01],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([[ 5.29158422e+02, -1.57833675e+01, -8.38021080e+00],
+ [ -1.57833675e+01, 5.40235041e-01, 2.31120327e-01],
+ [ -8.38021080e+00, 2.31120327e-01, 1.44977385e-01]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
pr2 = 0.346472557570858
- np.testing.assert_allclose(reg.pr2, pr2, RTOL)
+ np.testing.assert_allclose(reg.pr2,pr2,RTOL)
sig2 = 192.50022721929574
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
- std_err = np.array([23.003401, 0.73500657, 0.38075777])
- np.testing.assert_allclose(reg.std_err, std_err, RTOL)
- z_stat = np.array(
- [
- [2.40664208, 0.01609994],
- [0.63144305, 0.52775088],
- [-1.75659016, 0.07898769],
- ]
- )
- np.testing.assert_allclose(reg.z_stat, z_stat, RTOL)
-
-
-class TestBaseGMCombo(unittest.TestCase):
- def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
- y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
- X = []
- X.append(db.by_col("INC"))
- X.append(db.by_col("CRIME"))
- self.X = np.array(X).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
-
- def test_model(self):
- # Only spatial lag
- yd2, q2 = utils.set_endog(self.y, self.X, self.w, None, None, 1, True)
- self.X = np.hstack((np.ones(self.y.shape), self.X))
- reg = SP.BaseGM_Combo(self.y, self.X, yend=yd2, q=q2, w=self.w.sparse)
- betas = np.array(
- [[57.61123461], [0.73441314], [-0.59459416], [-0.21762921], [0.54732051]]
- )
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([25.57932637])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e_filtered = np.array([31.65374945])
- np.testing.assert_allclose(reg.e_filtered[0], e_filtered, RTOL)
- predy = np.array([54.88767663])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
- n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
- k = 4
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x[0], x, RTOL)
- yend = np.array([35.4585005])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598, 35.4585005])
- np.testing.assert_allclose(reg.z[0], z, RTOL)
- my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
- sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array([5.22438365e02, 2.38012873e-01, 3.20924172e-02, 2.15753599e-01])
- np.testing.assert_allclose(np.diag(reg.vm), vm, RTOL)
- sig2 = 181.78650186468832
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
+ std_err = np.array([ 23.003401 , 0.73500657, 0.38075777])
+ np.testing.assert_allclose(reg.std_err,std_err,RTOL)
+ z_stat = np.array([[ 2.40664208, 0.01609994], [ 0.63144305, 0.52775088], [-1.75659016, 0.07898769]])
+ np.testing.assert_allclose(reg.z_stat,z_stat,RTOL)
class TestGMCombo(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X.append(db.by_col("CRIME"))
self.X = np.array(X).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
-
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
# Only spatial lag
reg = SP.GM_Combo(self.y, self.X, w=self.w)
- e_reduced = np.array([28.18617481])
- np.testing.assert_allclose(reg.e_pred[0], e_reduced, RTOL)
- predy_e = np.array([52.28082782])
- np.testing.assert_allclose(reg.predy_e[0], predy_e, RTOL)
- betas = np.array(
- [[57.61123515], [0.73441313], [-0.59459416], [-0.21762921], [0.54732051]]
- )
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([25.57932637])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e_filtered = np.array([31.65374945])
- np.testing.assert_allclose(reg.e_filtered[0], e_filtered, RTOL)
- predy = np.array([54.88767685])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ e_reduced = np.array([ 28.18617481])
+ np.testing.assert_allclose(reg.e_pred[0],e_reduced,RTOL)
+ predy_e = np.array([ 52.28082782])
+ np.testing.assert_allclose(reg.predy_e[0],predy_e,RTOL)
+ betas = np.array([[ 57.61123515],[ 0.73441313], [ -0.59459416], [ -0.21762921], [ 0.54732051]])
+ np.testing.assert_allclose(reg.betas,betas,RTOL)
+ u = np.array([ 25.57932637])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ e_filtered = np.array([ 31.65374945])
+ np.testing.assert_allclose(reg.e_filtered[0],e_filtered,RTOL)
+ predy = np.array([ 54.88767685])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 4
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x[0], x, RTOL)
- yend = np.array([35.4585005])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598, 35.4585005])
- np.testing.assert_allclose(reg.z[0], z, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.x[0],x,RTOL)
+ yend = np.array([ 35.4585005])
+ np.testing.assert_allclose(reg.yend[0],yend,RTOL)
+ z = np.array([ 1. , 19.531 , 15.72598 , 35.4585005])
+ np.testing.assert_allclose(reg.z[0],z,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my)
+ np.testing.assert_allclose(reg.mean_y,my)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy)
- vm = np.array([5.22438333e02, 2.38012875e-01, 3.20924173e-02, 2.15753579e-01])
- np.testing.assert_allclose(np.diag(reg.vm), vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy)
+ vm = np.array([ 5.22438333e+02, 2.38012875e-01, 3.20924173e-02,
+ 2.15753579e-01])
+ np.testing.assert_allclose(np.diag(reg.vm),vm,RTOL)
sig2 = 181.78650186468832
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
pr2 = 0.3018280166937799
- np.testing.assert_allclose(reg.pr2, pr2, RTOL)
+ np.testing.assert_allclose(reg.pr2,pr2,RTOL)
pr2_e = 0.3561355586759414
- np.testing.assert_allclose(reg.pr2_e, pr2_e, RTOL)
- std_err = np.array([22.85692222, 0.48786559, 0.17914356, 0.46449318])
- np.testing.assert_allclose(reg.std_err, std_err, RTOL)
- z_stat = np.array(
- [
- [2.52051597e00, 1.17182922e-02],
- [1.50535954e00, 1.32231664e-01],
- [-3.31909311e00, 9.03103123e-04],
- [-4.68530506e-01, 6.39405261e-01],
- ]
- )
- np.testing.assert_allclose(reg.z_stat, z_stat, RTOL)
-
+ np.testing.assert_allclose(reg.pr2_e,pr2_e,RTOL)
+ std_err = np.array([ 22.85692222, 0.48786559, 0.17914356, 0.46449318])
+ np.testing.assert_allclose(reg.std_err,std_err,RTOL)
+ z_stat = np.array([[ 2.52051597e+00, 1.17182922e-02], [ 1.50535954e+00, 1.32231664e-01], [ -3.31909311e+00, 9.03103123e-04], [ -4.68530506e-01, 6.39405261e-01]])
+ np.testing.assert_allclose(reg.z_stat,z_stat,RTOL)
-if __name__ == "__main__":
+if __name__ == '__main__':
unittest.main()
diff --git a/spreg/tests/test_error_sp_sparse.py b/spreg/tests/test_error_sp_sparse.py
index 07fd942a..4fad34cc 100755
--- a/spreg/tests/test_error_sp_sparse.py
+++ b/spreg/tests/test_error_sp_sparse.py
@@ -5,133 +5,108 @@
from scipy import sparse
from spreg import utils
from spreg import error_sp as SP
-from libpysal.common import RTOL
-
+from libpysal.common import RTOL
class TestBaseGMError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X.append(db.by_col("CRIME"))
self.X = np.array(X).T
- self.X = np.hstack((np.ones(self.y.shape), self.X))
+ self.X = np.hstack((np.ones(self.y.shape),self.X))
self.X = sparse.csr_matrix(self.X)
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.BaseGM_Error(self.y, self.X, self.w.sparse)
- betas = np.array([[47.94371455], [0.70598088], [-0.55571746], [0.37230161]])
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([27.4739775])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 47.94371455], [ 0.70598088], [ -0.55571746], [ 0.37230161]])
+ np.testing.assert_allclose(reg.betas,betas,RTOL)
+ u = np.array([ 27.4739775])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x.toarray()[0], x, RTOL)
- e = np.array([31.89620319])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.x.toarray()[0],x,RTOL)
+ e = np.array([ 31.89620319])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array(
- [
- [1.51884943e02, -5.37622793e00, -1.86970286e00],
- [-5.37622793e00, 2.48972661e-01, 5.26564244e-02],
- [-1.86970286e00, 5.26564244e-02, 3.18930650e-02],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([[ 1.51884943e+02, -5.37622793e+00, -1.86970286e+00], [ -5.37622793e+00, 2.48972661e-01, 5.26564244e-02], [ -1.86970286e+00, 5.26564244e-02, 3.18930650e-02]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
sig2 = 191.73716465732355
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
-
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
class TestGMError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X.append(db.by_col("CRIME"))
self.X = np.array(X).T
self.X = sparse.csr_matrix(self.X)
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.GM_Error(self.y, self.X, self.w)
- betas = np.array([[47.94371455], [0.70598088], [-0.55571746], [0.37230161]])
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([27.4739775])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 47.94371455], [ 0.70598088], [ -0.55571746], [ 0.37230161]])
+ np.testing.assert_allclose(reg.betas,betas,RTOL)
+ u = np.array([ 27.4739775])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x.toarray()[0], x, RTOL)
- e = np.array([31.89620319])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([52.9930255])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.x.toarray()[0],x,RTOL)
+ e = np.array([ 31.89620319])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 52.9930255])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array(
- [
- [1.51884943e02, -5.37622793e00, -1.86970286e00],
- [-5.37622793e00, 2.48972661e-01, 5.26564244e-02],
- [-1.86970286e00, 5.26564244e-02, 3.18930650e-02],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([[ 1.51884943e+02, -5.37622793e+00, -1.86970286e+00], [ -5.37622793e+00, 2.48972661e-01, 5.26564244e-02], [ -1.86970286e+00, 5.26564244e-02, 3.18930650e-02]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
sig2 = 191.73716465732355
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
pr2 = 0.3495097406012179
- np.testing.assert_allclose(reg.pr2, pr2, RTOL)
- std_err = np.array([12.32416094, 0.4989716, 0.1785863])
- np.testing.assert_allclose(reg.std_err, std_err, RTOL)
- z_stat = np.array(
- [
- [3.89022140e00, 1.00152805e-04],
- [1.41487186e00, 1.57106070e-01],
- [-3.11175868e00, 1.85976455e-03],
- ]
- )
- np.testing.assert_allclose(reg.z_stat, z_stat, RTOL)
-
+ np.testing.assert_allclose(reg.pr2,pr2,RTOL)
+ std_err = np.array([ 12.32416094, 0.4989716 , 0.1785863 ])
+ np.testing.assert_allclose(reg.std_err,std_err,RTOL)
+ z_stat = np.array([[ 3.89022140e+00, 1.00152805e-04], [ 1.41487186e+00, 1.57106070e-01], [ -3.11175868e+00, 1.85976455e-03]])
+ np.testing.assert_allclose(reg.z_stat,z_stat,RTOL)
class TestBaseGMEndogError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
self.X = np.array(X).T
- self.X = np.hstack((np.ones(self.y.shape), self.X))
+ self.X = np.hstack((np.ones(self.y.shape),self.X))
self.X = sparse.csr_matrix(self.X)
yd = []
yd.append(db.by_col("CRIME"))
@@ -139,57 +114,50 @@ def setUp(self):
q = []
q.append(db.by_col("DISCBD"))
self.q = np.array(q).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.BaseGM_Endog_Error(self.y, self.X, self.yd, self.q, self.w.sparse)
- betas = np.array([[55.36095292], [0.46411479], [-0.66883535], [0.38989939]])
- print("Running reduced-precision test in L125 of test_error_sp_sparse.py")
- np.testing.assert_allclose(reg.betas, betas, RTOL + 0.0001)
- u = np.array([26.55951566])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e = np.array([31.23925425])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([53.9074875])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 55.36095292], [ 0.46411479], [ -0.66883535], [ 0.38989939]])
+ print('Running reduced-precision test in L125 of test_error_sp_sparse.py')
+ np.testing.assert_allclose(reg.betas,betas,RTOL + .0001)
+ u = np.array([ 26.55951566])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ e = np.array([ 31.23925425])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 53.9074875])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531])
- np.testing.assert_allclose(reg.x.toarray()[0], x, RTOL)
- yend = np.array([15.72598])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.z.toarray()[0], z, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531])
+ np.testing.assert_allclose(reg.x.toarray()[0],x,RTOL)
+ yend = np.array([ 15.72598])
+ np.testing.assert_allclose(reg.yend[0],yend,RTOL)
+ z = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.z.toarray()[0],z,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
- # std_y
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
+ #std_y
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- # vm
- vm = np.array(
- [
- [529.15840986, -15.78336736, -8.38021053],
- [-15.78336736, 0.54023504, 0.23112032],
- [-8.38021053, 0.23112032, 0.14497738],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ #vm
+ vm = np.array([[ 529.15840986, -15.78336736, -8.38021053],
+ [ -15.78336736, 0.54023504, 0.23112032],
+ [ -8.38021053, 0.23112032, 0.14497738]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
sig2 = 192.5002
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
-
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
class TestGMEndogError(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
self.X = np.array(X).T
@@ -200,185 +168,109 @@ def setUp(self):
q = []
q.append(db.by_col("DISCBD"))
self.q = np.array(q).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
reg = SP.GM_Endog_Error(self.y, self.X, self.yd, self.q, self.w)
- betas = np.array([[55.36095292], [0.46411479], [-0.66883535], [0.38989939]])
- print("Running reduced-tolernace test in L181 of test_error_sp_sparse.py")
- np.testing.assert_allclose(reg.betas, betas, RTOL + 0.0001)
- u = np.array([26.55951566])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e = np.array([31.23925425])
- np.testing.assert_allclose(reg.e_filtered[0], e, RTOL)
- predy = np.array([53.9074875])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ betas = np.array([[ 55.36095292], [ 0.46411479], [ -0.66883535], [ 0.38989939]])
+ print('Running reduced-tolernace test in L181 of test_error_sp_sparse.py')
+ np.testing.assert_allclose(reg.betas,betas,RTOL + .0001)
+ u = np.array([ 26.55951566])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ e = np.array([ 31.23925425])
+ np.testing.assert_allclose(reg.e_filtered[0],e,RTOL)
+ predy = np.array([ 53.9074875])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 3
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531])
- np.testing.assert_allclose(reg.x.toarray()[0], x, RTOL)
- yend = np.array([15.72598])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.z.toarray()[0], z, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531])
+ np.testing.assert_allclose(reg.x.toarray()[0],x,RTOL)
+ yend = np.array([ 15.72598])
+ np.testing.assert_allclose(reg.yend[0],yend,RTOL)
+ z = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.z.toarray()[0],z,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array(
- [
- [529.15840986, -15.78336736, -8.38021053],
- [-15.78336736, 0.54023504, 0.23112032],
- [-8.38021053, 0.23112032, 0.14497738],
- ]
- )
- np.testing.assert_allclose(reg.vm, vm, RTOL)
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([[ 529.15840986, -15.78336736, -8.38021053],
+ [ -15.78336736, 0.54023504, 0.23112032],
+ [ -8.38021053, 0.23112032, 0.14497738]])
+ np.testing.assert_allclose(reg.vm,vm,RTOL)
pr2 = 0.346472557570858
- np.testing.assert_allclose(reg.pr2, pr2, RTOL)
+ np.testing.assert_allclose(reg.pr2,pr2,RTOL)
sig2 = 192.5002
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
- std_err = np.array([23.003401, 0.73500657, 0.38075777])
- np.testing.assert_allclose(reg.std_err, std_err, RTOL)
- z_stat = np.array(
- [
- [2.40664208, 0.01609994],
- [0.63144305, 0.52775088],
- [-1.75659016, 0.07898769],
- ]
- )
- np.testing.assert_allclose(reg.z_stat, z_stat, RTOL)
-
-
-class TestBaseGMCombo(unittest.TestCase):
- def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
- y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
- X = []
- X.append(db.by_col("INC"))
- X.append(db.by_col("CRIME"))
- self.X = np.array(X).T
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
-
- def test_model(self):
- # Only spatial lag
- yd2, q2 = utils.set_endog(self.y, self.X, self.w, None, None, 1, True)
- self.X = np.hstack((np.ones(self.y.shape), self.X))
- self.X = sparse.csr_matrix(self.X)
- reg = SP.BaseGM_Combo(self.y, self.X, yend=yd2, q=q2, w=self.w.sparse)
- betas = np.array(
- [[57.61123461], [0.73441314], [-0.59459416], [-0.21762921], [0.54732051]]
- )
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([25.57932637])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e_filtered = np.array([31.65374945])
- np.testing.assert_allclose(reg.e_filtered[0], e_filtered, RTOL)
- predy = np.array([54.88767663])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
- n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
- k = 4
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x.toarray()[0], x, RTOL)
- yend = np.array([35.4585005])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598, 35.4585005])
- np.testing.assert_allclose(reg.z.toarray()[0], z, RTOL)
- my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
- sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array([22.85691168, 0.48786563, 0.17914357, 0.46449287])
- np.testing.assert_allclose(np.sqrt(reg.vm.diagonal()), vm, RTOL)
- sig2 = 181.78650186468832
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
+ std_err = np.array([ 23.003401 , 0.73500657, 0.38075777])
+ np.testing.assert_allclose(reg.std_err,std_err,RTOL)
+ z_stat = np.array([[ 2.40664208, 0.01609994], [ 0.63144305, 0.52775088], [-1.75659016, 0.07898769]])
+ np.testing.assert_allclose(reg.z_stat,z_stat,RTOL)
class TestGMCombo(unittest.TestCase):
def setUp(self):
- db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ db=libpysal.io.open(libpysal.examples.get_path("columbus.dbf"),"r")
y = np.array(db.by_col("HOVAL"))
- self.y = np.reshape(y, (49, 1))
+ self.y = np.reshape(y, (49,1))
X = []
X.append(db.by_col("INC"))
X.append(db.by_col("CRIME"))
self.X = np.array(X).T
self.X = sparse.csr_matrix(self.X)
- self.w = libpysal.weights.Rook.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
-
+ self.w = libpysal.weights.Rook.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
def test_model(self):
# Only spatial lag
reg = SP.GM_Combo(self.y, self.X, w=self.w)
- e_reduced = np.array([28.18617481])
- np.testing.assert_allclose(reg.e_pred[0], e_reduced, RTOL)
- predy_e = np.array([52.28082782])
- np.testing.assert_allclose(reg.predy_e[0], predy_e, RTOL)
- betas = np.array(
- [[57.61123515], [0.73441313], [-0.59459416], [-0.21762921], [0.54732051]]
- )
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- u = np.array([25.57932637])
- np.testing.assert_allclose(reg.u[0], u, RTOL)
- e_filtered = np.array([31.65374945])
- np.testing.assert_allclose(reg.e_filtered[0], e_filtered, RTOL)
- predy = np.array([54.88767685])
- np.testing.assert_allclose(reg.predy[0], predy, RTOL)
+ e_reduced = np.array([ 28.18617481])
+ np.testing.assert_allclose(reg.e_pred[0],e_reduced,RTOL)
+ predy_e = np.array([ 52.28082782])
+ np.testing.assert_allclose(reg.predy_e[0],predy_e,RTOL)
+ betas = np.array([[ 57.61123515],[ 0.73441313], [ -0.59459416], [ -0.21762921], [ 0.54732051]])
+ np.testing.assert_allclose(reg.betas,betas,RTOL)
+ u = np.array([ 25.57932637])
+ np.testing.assert_allclose(reg.u[0],u,RTOL)
+ e_filtered = np.array([ 31.65374945])
+ np.testing.assert_allclose(reg.e_filtered[0],e_filtered,RTOL)
+ predy = np.array([ 54.88767685])
+ np.testing.assert_allclose(reg.predy[0],predy,RTOL)
n = 49
- np.testing.assert_allclose(reg.n, n, RTOL)
+ np.testing.assert_allclose(reg.n,n,RTOL)
k = 4
- np.testing.assert_allclose(reg.k, k, RTOL)
- y = np.array([80.467003])
- np.testing.assert_allclose(reg.y[0], y, RTOL)
- x = np.array([1.0, 19.531, 15.72598])
- np.testing.assert_allclose(reg.x.toarray()[0], x, RTOL)
- yend = np.array([35.4585005])
- np.testing.assert_allclose(reg.yend[0], yend, RTOL)
- z = np.array([1.0, 19.531, 15.72598, 35.4585005])
- np.testing.assert_allclose(reg.z.toarray()[0], z, RTOL)
+ np.testing.assert_allclose(reg.k,k,RTOL)
+ y = np.array([ 80.467003])
+ np.testing.assert_allclose(reg.y[0],y,RTOL)
+ x = np.array([ 1. , 19.531 , 15.72598])
+ np.testing.assert_allclose(reg.x.toarray()[0],x,RTOL)
+ yend = np.array([ 35.4585005])
+ np.testing.assert_allclose(reg.yend[0],yend,RTOL)
+ z = np.array([ 1. , 19.531 , 15.72598 , 35.4585005])
+ np.testing.assert_allclose(reg.z.toarray()[0],z,RTOL)
my = 38.43622446938776
- np.testing.assert_allclose(reg.mean_y, my, RTOL)
+ np.testing.assert_allclose(reg.mean_y,my,RTOL)
sy = 18.466069465206047
- np.testing.assert_allclose(reg.std_y, sy, RTOL)
- vm = np.array([22.85691168, 0.48786563, 0.17914357, 0.46449287])
+ np.testing.assert_allclose(reg.std_y,sy,RTOL)
+ vm = np.array([22.85691168, 0.48786563, 0.17914357, 0.46449287])
np.testing.assert_allclose(np.sqrt(reg.vm.diagonal()), vm, RTOL)
sig2 = 181.78650186468832
- np.testing.assert_allclose(reg.sig2, sig2, RTOL)
+ np.testing.assert_allclose(reg.sig2,sig2,RTOL)
pr2 = 0.3018280166937799
- np.testing.assert_allclose(reg.pr2, pr2, RTOL)
+ np.testing.assert_allclose(reg.pr2,pr2,RTOL)
pr2_e = 0.3561355587000738
- np.testing.assert_allclose(reg.pr2_e, pr2_e, RTOL)
- std_err = np.array([22.85692222, 0.48786559, 0.17914356, 0.46449318])
- np.testing.assert_allclose(reg.std_err, std_err, RTOL)
- z_stat = np.array(
- [
- [2.52051597e00, 1.17182922e-02],
- [1.50535954e00, 1.32231664e-01],
- [-3.31909311e00, 9.03103123e-04],
- [-4.68530506e-01, 6.39405261e-01],
- ]
- )
- np.testing.assert_allclose(reg.z_stat, z_stat, RTOL)
-
+ np.testing.assert_allclose(reg.pr2_e,pr2_e,RTOL)
+ std_err = np.array([ 22.85692222, 0.48786559, 0.17914356, 0.46449318])
+ np.testing.assert_allclose(reg.std_err,std_err,RTOL)
+ z_stat = np.array([[ 2.52051597e+00, 1.17182922e-02], [ 1.50535954e+00, 1.32231664e-01], [ -3.31909311e+00, 9.03103123e-04], [ -4.68530506e-01, 6.39405261e-01]])
+ np.testing.assert_allclose(reg.z_stat,z_stat,RTOL)
-if __name__ == "__main__":
- start_suppress = np.get_printoptions()["suppress"]
- np.set_printoptions(suppress=True)
+if __name__ == '__main__':
+ start_suppress = np.get_printoptions()['suppress']
+ np.set_printoptions(suppress=True)
unittest.main()
np.set_printoptions(suppress=start_suppress)
+
diff --git a/spreg/tests/test_twosls_sp_regimes.py b/spreg/tests/test_twosls_sp_regimes.py
index a264a973..f763ac74 100644
--- a/spreg/tests/test_twosls_sp_regimes.py
+++ b/spreg/tests/test_twosls_sp_regimes.py
@@ -6,527 +6,349 @@
from spreg.twosls_sp import GM_Lag
from libpysal.common import RTOL
-
class TestGMLag_Regimes(unittest.TestCase):
def setUp(self):
- self.w = libpysal.weights.Queen.from_shapefile(
- libpysal.examples.get_path("columbus.shp")
- )
- self.w.transform = "r"
- self.db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), "r")
+ self.w = libpysal.weights.Queen.from_shapefile(libpysal.examples.get_path("columbus.shp"))
+ self.w.transform = 'r'
+ self.db = libpysal.io.open(libpysal.examples.get_path("columbus.dbf"), 'r')
y = np.array(self.db.by_col("CRIME"))
- self.y = np.reshape(y, (49, 1))
- self.r_var = "NSA"
+ self.y = np.reshape(y, (49,1))
+ self.r_var = 'NSA'
self.regimes = self.db.by_col(self.r_var)
def test___init__(self):
- # Matches SpaceStat
+ #Matches SpaceStat
X = []
X.append(self.db.by_col("INC"))
X.append(self.db.by_col("HOVAL"))
self.X = np.array(X).T
- reg = GM_Lag_Regimes(
- self.y,
- self.X,
- self.regimes,
- w=self.w,
- sig2n_k=True,
- regime_lag_sep=False,
- regime_err_sep=False,
- )
- betas = np.array(
- [
- [45.14892906],
- [-1.42593383],
- [-0.11501037],
- [40.99023016],
- [-0.81498302],
- [-0.28391409],
- [0.4736163],
- ]
- )
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- e_5 = np.array(
- [[-1.47960519], [-7.93748769], [-5.88561835], [-13.37941105], [5.2524303]]
- )
- np.testing.assert_allclose(reg.e_pred[0:5], e_5, RTOL)
- h_0 = np.array(
- [[0.0, 0.0, 0.0, 1.0, 19.531, 80.467003, 0.0, 0.0, 18.594, 35.4585005]]
- )
- np.testing.assert_allclose(reg.h[0] * np.eye(10), h_0)
+ reg = GM_Lag_Regimes(self.y, self.X, self.regimes, w=self.w, sig2n_k=True, regime_lag_sep=False, regime_err_sep=False)
+ betas = np.array([[ 45.14892906],
+ [ -1.42593383],
+ [ -0.11501037],
+ [ 40.99023016],
+ [ -0.81498302],
+ [ -0.28391409],
+ [ 0.4736163 ]])
+ np.testing.assert_allclose(reg.betas, betas,RTOL)
+ e_5 = np.array([[ -1.47960519],
+ [ -7.93748769],
+ [ -5.88561835],
+ [-13.37941105],
+ [ 5.2524303 ]])
+ np.testing.assert_allclose(reg.e_pred[0:5], e_5,RTOL)
+ h_0 = np.array([[ 0. , 0. , 0. , 1. , 19.531 ,
+ 80.467003 , 0. , 0. , 18.594 , 35.4585005]])
+ np.testing.assert_allclose(reg.h[0]*np.eye(10), h_0)
self.assertEqual(reg.k, 7)
self.assertEqual(reg.kstar, 1)
- np.testing.assert_allclose(reg.mean_y, 35.128823897959187, RTOL)
+ np.testing.assert_allclose(reg.mean_y, 35.128823897959187,RTOL)
self.assertEqual(reg.n, 49)
- np.testing.assert_allclose(reg.pr2, 0.6572182131915739, RTOL)
- np.testing.assert_allclose(reg.pr2_e, 0.5779687278635434, RTOL)
- pfora1a2 = np.array(
- [
- -2.15017629,
- -0.30169328,
- -0.07603704,
- -22.06541809,
- 0.45738058,
- 0.02805828,
- 0.39073923,
- ]
- )
- np.testing.assert_allclose(reg.pfora1a2[0], pfora1a2, RTOL)
- predy_5 = np.array(
- [[13.93216104], [23.46424269], [34.43510955], [44.32473878], [44.39117516]]
- )
- np.testing.assert_allclose(reg.predy[0:5], predy_5, RTOL)
- predy_e_5 = np.array(
- [[17.20558519], [26.73924169], [36.51239935], [45.76717105], [45.4790797]]
- )
- np.testing.assert_allclose(reg.predy_e[0:5], predy_e_5, RTOL)
- q_5 = np.array([[0.0, 0.0, 18.594, 35.4585005]])
- np.testing.assert_allclose(reg.q[0] * np.eye(4), q_5, RTOL)
- self.assertEqual(reg.robust, "unadjusted")
- np.testing.assert_allclose(reg.sig2n_k, 109.76462904625834, RTOL)
- np.testing.assert_allclose(reg.sig2n, 94.08396775393571, RTOL)
- np.testing.assert_allclose(reg.sig2, 109.76462904625834, RTOL)
- np.testing.assert_allclose(reg.std_y, 16.732092091229699, RTOL)
- u_5 = np.array(
- [[1.79381896], [-4.66248869], [-3.80832855], [-11.93697878], [6.34033484]]
- )
- np.testing.assert_allclose(reg.u[0:5], u_5, RTOL)
- np.testing.assert_allclose(reg.utu, 4610.11441994285, RTOL)
- varb = np.array(
- [
- 1.23841820e00,
- -3.65620114e-02,
- -1.21919663e-03,
- 1.00057547e00,
- -2.07403182e-02,
- -1.27232693e-03,
- -1.77184084e-02,
- ]
- )
- np.testing.assert_allclose(reg.varb[0], varb, RTOL)
- vm = np.array(
- [
- 1.35934514e02,
- -4.01321561e00,
- -1.33824666e-01,
- 1.09827796e02,
- -2.27655334e00,
- -1.39656494e-01,
- -1.94485452e00,
- ]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- x_0 = np.array([[0.0, 0.0, 0.0, 1.0, 19.531, 80.467003]])
- np.testing.assert_allclose(reg.x[0] * np.eye(6), x_0, RTOL)
- y_5 = np.array([[15.72598], [18.801754], [30.626781], [32.38776], [50.73151]])
- np.testing.assert_allclose(reg.y[0:5], y_5, RTOL)
- yend_5 = np.array(
- [[24.7142675], [26.24684033], [29.411751], [34.64647575], [40.4653275]]
- )
- np.testing.assert_allclose(reg.yend[0:5] * np.array([[1]]), yend_5, RTOL)
- z_0 = np.array([[0.0, 0.0, 0.0, 1.0, 19.531, 80.467003, 24.7142675]])
- np.testing.assert_allclose(reg.z[0] * np.eye(7), z_0, RTOL)
- zthhthi = np.array(
- [
- 1.00000000e00,
- -2.35922393e-16,
- 5.55111512e-17,
- 0.00000000e00,
- 0.00000000e00,
- 0.00000000e00,
- -4.44089210e-16,
- 2.22044605e-16,
- 0.00000000e00,
- 0.00000000e00,
- ]
- )
+ np.testing.assert_allclose(reg.pr2, 0.6572182131915739,RTOL)
+ np.testing.assert_allclose(reg.pr2_e, 0.5779687278635434,RTOL)
+ pfora1a2 = np.array([ -2.15017629, -0.30169328, -0.07603704, -22.06541809,
+ 0.45738058, 0.02805828, 0.39073923])
+ np.testing.assert_allclose(reg.pfora1a2[0], pfora1a2,RTOL)
+ predy_5 = np.array([[ 13.93216104],
+ [ 23.46424269],
+ [ 34.43510955],
+ [ 44.32473878],
+ [ 44.39117516]])
+ np.testing.assert_allclose(reg.predy[0:5], predy_5,RTOL)
+ predy_e_5 = np.array([[ 17.20558519],
+ [ 26.73924169],
+ [ 36.51239935],
+ [ 45.76717105],
+ [ 45.4790797 ]])
+ np.testing.assert_allclose(reg.predy_e[0:5], predy_e_5,RTOL)
+ q_5 = np.array([[ 0. , 0. , 18.594 , 35.4585005]])
+ np.testing.assert_allclose(reg.q[0]*np.eye(4), q_5, RTOL)
+ self.assertEqual(reg.robust, 'unadjusted')
+ np.testing.assert_allclose(reg.sig2n_k, 109.76462904625834,RTOL)
+ np.testing.assert_allclose(reg.sig2n, 94.08396775393571,RTOL)
+ np.testing.assert_allclose(reg.sig2, 109.76462904625834,RTOL)
+ np.testing.assert_allclose(reg.std_y, 16.732092091229699,RTOL)
+ u_5 = np.array([[ 1.79381896],
+ [ -4.66248869],
+ [ -3.80832855],
+ [-11.93697878],
+ [ 6.34033484]])
+ np.testing.assert_allclose(reg.u[0:5], u_5,RTOL)
+ np.testing.assert_allclose(reg.utu, 4610.11441994285,RTOL)
+ varb = np.array([ 1.23841820e+00, -3.65620114e-02, -1.21919663e-03,
+ 1.00057547e+00, -2.07403182e-02, -1.27232693e-03,
+ -1.77184084e-02])
+ np.testing.assert_allclose(reg.varb[0], varb,RTOL)
+ vm = np.array([ 1.35934514e+02, -4.01321561e+00, -1.33824666e-01,
+ 1.09827796e+02, -2.27655334e+00, -1.39656494e-01,
+ -1.94485452e+00])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ x_0 = np.array([[ 0. , 0. , 0. , 1. , 19.531 ,
+ 80.467003]])
+ np.testing.assert_allclose(reg.x[0]*np.eye(6), x_0,RTOL)
+ y_5 = np.array([[ 15.72598 ],
+ [ 18.801754],
+ [ 30.626781],
+ [ 32.38776 ],
+ [ 50.73151 ]])
+ np.testing.assert_allclose(reg.y[0:5], y_5,RTOL)
+ yend_5 = np.array([[ 24.7142675 ],
+ [ 26.24684033],
+ [ 29.411751 ],
+ [ 34.64647575],
+ [ 40.4653275 ]])
+ np.testing.assert_allclose(reg.yend[0:5]*np.array([[1]]), yend_5,RTOL)
+ z_0 = np.array([[ 0. , 0. , 0. , 1. , 19.531 ,
+ 80.467003 , 24.7142675]])
+ np.testing.assert_allclose(reg.z[0]*np.eye(7), z_0,RTOL)
+ zthhthi = np.array([ 1.00000000e+00, -2.35922393e-16, 5.55111512e-17,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -4.44089210e-16, 2.22044605e-16, 0.00000000e+00,
+ 0.00000000e+00])
# np.testing.assert_allclose(reg.zthhthi[0], zthhthi, RTOL)
np.testing.assert_array_almost_equal(reg.zthhthi[0], zthhthi)
- chow_regi = np.array(
- [[0.19692667, 0.65721307], [0.5666492, 0.45159351], [0.45282066, 0.5009985]]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 0.82409867601863462, RTOL)
-
+ chow_regi = np.array([[ 0.19692667, 0.65721307],
+ [ 0.5666492 , 0.45159351],
+ [ 0.45282066, 0.5009985 ]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,RTOL)
+ np.testing.assert_allclose(reg.chow.joint[0], 0.82409867601863462,RTOL)
+
def test_init_discbd(self):
- # Matches SpaceStat.
+ #Matches SpaceStat.
X = np.array(self.db.by_col("INC"))
- X = np.reshape(X, (49, 1))
+ X = np.reshape(X, (49,1))
yd = np.array(self.db.by_col("HOVAL"))
- yd = np.reshape(yd, (49, 1))
+ yd = np.reshape(yd, (49,1))
q = np.array(self.db.by_col("DISCBD"))
- q = np.reshape(q, (49, 1))
- reg = GM_Lag_Regimes(
- self.y,
- X,
- self.regimes,
- yend=yd,
- q=q,
- lag_q=False,
- w=self.w,
- sig2n_k=True,
- regime_lag_sep=False,
- regime_err_sep=False,
- )
- tbetas = np.array(
- [
- [42.7266306],
- [-0.15552345],
- [37.70545276],
- [-0.5341577],
- [-0.68305796],
- [-0.37106077],
- [0.55809516],
- ]
- )
- np.testing.assert_allclose(tbetas, reg.betas, RTOL)
- vm = np.array(
- [
- 270.62979422,
- 3.62539081,
- 327.89638627,
- 6.24949355,
- -5.25333106,
- -6.01743515,
- -4.19290074,
- ]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- e_3 = np.array([[-0.33142796], [-9.51719607], [-7.86272153]])
- np.testing.assert_allclose(reg.e_pred[0:3], e_3, RTOL)
- u_3 = np.array([[4.51839601], [-5.67363147], [-5.1927562]])
- np.testing.assert_allclose(reg.u[0:3], u_3, RTOL)
- predy_3 = np.array([[11.20758399], [24.47538547], [35.8195372]])
- np.testing.assert_allclose(reg.predy[0:3], predy_3, RTOL)
- predy_e_3 = np.array([[16.05740796], [28.31895007], [38.48950253]])
- np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3, RTOL)
- chow_regi = np.array(
- [
- [0.13130991, 0.71707772],
- [0.04740966, 0.82763357],
- [0.15474413, 0.6940423],
- ]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 0.31248100032096549, RTOL)
-
+ q = np.reshape(q, (49,1))
+ reg = GM_Lag_Regimes(self.y, X, self.regimes, yend=yd, q=q, lag_q=False, w=self.w, sig2n_k=True, regime_lag_sep=False, regime_err_sep=False)
+ tbetas = np.array([[ 42.7266306 ],
+ [ -0.15552345],
+ [ 37.70545276],
+ [ -0.5341577 ],
+ [ -0.68305796],
+ [ -0.37106077],
+ [ 0.55809516]])
+ np.testing.assert_allclose(tbetas, reg.betas,RTOL)
+ vm = np.array([ 270.62979422, 3.62539081, 327.89638627, 6.24949355,
+ -5.25333106, -6.01743515, -4.19290074])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ e_3 = np.array([[-0.33142796],
+ [-9.51719607],
+ [-7.86272153]])
+ np.testing.assert_allclose(reg.e_pred[0:3], e_3,RTOL)
+ u_3 = np.array([[ 4.51839601],
+ [-5.67363147],
+ [-5.1927562 ]])
+ np.testing.assert_allclose(reg.u[0:3], u_3,RTOL)
+ predy_3 = np.array([[ 11.20758399],
+ [ 24.47538547],
+ [ 35.8195372 ]])
+ np.testing.assert_allclose(reg.predy[0:3], predy_3,RTOL)
+ predy_e_3 = np.array([[ 16.05740796],
+ [ 28.31895007],
+ [ 38.48950253]])
+ np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3,RTOL)
+ chow_regi = np.array([[ 0.13130991, 0.71707772],
+ [ 0.04740966, 0.82763357],
+ [ 0.15474413, 0.6940423 ]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,RTOL)
+ np.testing.assert_allclose(reg.chow.joint[0], 0.31248100032096549,RTOL)
+
def test_lag_q(self):
X = np.array(self.db.by_col("INC"))
- X = np.reshape(X, (49, 1))
+ X = np.reshape(X, (49,1))
yd = np.array(self.db.by_col("HOVAL"))
- yd = np.reshape(yd, (49, 1))
+ yd = np.reshape(yd, (49,1))
q = np.array(self.db.by_col("DISCBD"))
- q = np.reshape(q, (49, 1))
- reg = GM_Lag_Regimes(
- self.y,
- X,
- self.regimes,
- yend=yd,
- q=q,
- w=self.w,
- sig2n_k=True,
- regime_lag_sep=False,
- regime_err_sep=False,
- )
- tbetas = np.array(
- [
- [37.87698329],
- [-0.89426982],
- [31.4714777],
- [-0.71640525],
- [-0.28494432],
- [-0.2294271],
- [0.62996544],
- ]
- )
- np.testing.assert_allclose(tbetas, reg.betas, RTOL)
- vm = np.array(
- [
- 128.25714554,
- -0.38975354,
- 95.7271044,
- -1.8429218,
- -1.75331978,
- -0.18240338,
- -1.67767464,
- ]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- chow_regi = np.array(
- [
- [0.43494049, 0.50957463],
- [0.02089281, 0.88507135],
- [0.01180501, 0.91347943],
- ]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 0.54288190938307757, RTOL)
-
+ q = np.reshape(q, (49,1))
+ reg = GM_Lag_Regimes(self.y, X, self.regimes, yend=yd, q=q, w=self.w, sig2n_k=True, regime_lag_sep=False, regime_err_sep=False)
+ tbetas = np.array([[ 37.87698329],
+ [ -0.89426982],
+ [ 31.4714777 ],
+ [ -0.71640525],
+ [ -0.28494432],
+ [ -0.2294271 ],
+ [ 0.62996544]])
+ np.testing.assert_allclose(tbetas, reg.betas,RTOL)
+ vm = np.array([ 128.25714554, -0.38975354, 95.7271044 , -1.8429218 ,
+ -1.75331978, -0.18240338, -1.67767464])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ chow_regi = np.array([[ 0.43494049, 0.50957463],
+ [ 0.02089281, 0.88507135],
+ [ 0.01180501, 0.91347943]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,RTOL)
+ np.testing.assert_allclose(reg.chow.joint[0], 0.54288190938307757,RTOL)
+
def test_all_regi(self):
X = np.array(self.db.by_col("INC"))
- X = np.reshape(X, (49, 1))
+ X = np.reshape(X, (49,1))
yd = np.array(self.db.by_col("HOVAL"))
- yd = np.reshape(yd, (49, 1))
+ yd = np.reshape(yd, (49,1))
q = np.array(self.db.by_col("DISCBD"))
- q = np.reshape(q, (49, 1))
- reg = GM_Lag_Regimes(
- self.y,
- X,
- self.regimes,
- yend=yd,
- q=q,
- w=self.w,
- regime_lag_sep=False,
- regime_err_sep=True,
- )
- tbetas = np.array(
- [
- [
- 37.87698329,
- -0.89426982,
- 31.4714777,
- -0.71640525,
- -0.28494432,
- -0.2294271,
- 0.62996544,
- ]
- ]
- )
- np.testing.assert_allclose(tbetas, reg.betas.T, RTOL)
- vm = np.array(
- [
- 70.38291551,
- -0.64868787,
- 49.25453215,
- -0.62851534,
- -0.75413453,
- -0.12674433,
- -0.97179236,
- ]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- e_3 = np.array([[-2.66997799], [-7.69786264], [-4.39412782]])
- np.testing.assert_allclose(reg.e_pred[0:3], e_3, RTOL)
- u_3 = np.array([[1.13879007], [-3.76873198], [-1.89671717]])
- np.testing.assert_allclose(reg.u[0:3], u_3, RTOL)
- predy_3 = np.array([[14.58718993], [22.57048598], [32.52349817]])
- np.testing.assert_allclose(reg.predy[0:3], predy_3, RTOL)
- predy_e_3 = np.array([[18.39595799], [26.49961664], [35.02090882]])
- np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3, RTOL)
- chow_regi = np.array(
- [
- [0.60091096, 0.43823066],
- [0.03006744, 0.8623373],
- [0.01943727, 0.88912016],
- ]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 0.88634854058300516, RTOL)
-
+ q = np.reshape(q, (49,1))
+ reg = GM_Lag_Regimes(self.y, X, self.regimes, yend=yd, q=q, w=self.w, regime_lag_sep=False, regime_err_sep=False)
+ tbetas = np.array([[ 37.87698329, -0.89426982, 31.4714777 , -0.71640525,
+ -0.28494432, -0.2294271 , 0.62996544]])
+ np.testing.assert_allclose(tbetas, reg.betas.T,RTOL)
+ vm = np.array([109.934696, -0.334074, 82.051804, -1.579647, -1.502846,
+ -0.156346, -1.438007])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ e_3 = np.array([[-2.66997799],
+ [-7.69786264],
+ [-4.39412782]])
+ np.testing.assert_allclose(reg.e_pred[0:3], e_3,RTOL)
+ u_3 = np.array([[ 1.13879007],
+ [-3.76873198],
+ [-1.89671717]])
+ np.testing.assert_allclose(reg.u[0:3], u_3,RTOL)
+ predy_3 = np.array([[ 14.58718993],
+ [ 22.57048598],
+ [ 32.52349817]])
+ np.testing.assert_allclose(reg.predy[0:3], predy_3,RTOL)
+ predy_e_3 = np.array([[ 18.39595799],
+ [ 26.49961664],
+ [ 35.02090882]])
+ np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3,RTOL)
+ chow_regi = np.array([[0.507431, 0.476253],
+ [0.024375, 0.875935],
+ [0.013773, 0.906578]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,1e-04)
+ np.testing.assert_allclose(reg.chow.joint[0], 0.633362,RTOL)
+
def test_all_regi_sig2(self):
- # Artficial:
+ #Artficial:
n = 256
- x1 = np.random.uniform(-10, 10, (n, 1))
- x2 = np.random.uniform(1, 5, (n, 1))
- q = x2 + np.random.normal(0, 1, (n, 1))
- x = np.hstack((x1, x2))
- y = np.dot(
- np.hstack((np.ones((n, 1)), x)), np.array([[1], [0.5], [2]])
- ) + np.random.normal(0, 1, (n, 1))
+ x1 = np.random.uniform(-10,10,(n,1))
+ x2 = np.random.uniform(1,5,(n,1))
+ q = x2 + np.random.normal(0,1,(n,1))
+ x = np.hstack((x1,x2))
+ y = np.dot(np.hstack((np.ones((n,1)),x)),np.array([[1],[0.5],[2]])) + np.random.normal(0,1,(n,1))
latt = int(np.sqrt(n))
- w = libpysal.weights.util.lat2W(latt, latt)
- w.transform = "r"
- regi = [0] * (n // 2) + [1] * (n // 2)
- model = GM_Lag_Regimes(
- y, x1, regi, q=q, yend=x2, w=w, regime_lag_sep=True, regime_err_sep=True
- )
- w1 = libpysal.weights.util.lat2W(latt // 2, latt)
- w1.transform = "r"
- model1 = GM_Lag(
- y[0 : (n // 2)].reshape((n // 2), 1),
- x1[0 : (n // 2)],
- yend=x2[0 : (n // 2)],
- q=q[0 : (n // 2)],
- w=w1,
- )
- model2 = GM_Lag(
- y[(n // 2) : n].reshape((n // 2), 1),
- x1[(n // 2) : n],
- yend=x2[(n // 2) : n],
- q=q[(n // 2) : n],
- w=w1,
- )
+ w = libpysal.weights.util.lat2W(latt,latt)
+ w.transform='r'
+ regi = [0]*(n//2) + [1]*(n//2)
+ model = GM_Lag_Regimes(y, x1, regi, q=q, yend=x2, w=w, regime_lag_sep=True, regime_err_sep=True)
+ w1 = libpysal.weights.util.lat2W(latt//2,latt)
+ w1.transform='r'
+ model1 = GM_Lag(y[0:(n//2)].reshape((n//2),1), x1[0:(n//2)],yend=x2[0:(n//2)], q=q[0:(n//2)], w=w1)
+ model2 = GM_Lag(y[(n//2):n].reshape((n//2),1), x1[(n//2):n],yend=x2[(n//2):n], q=q[(n//2):n], w=w1)
tbetas = np.vstack((model1.betas, model2.betas))
- np.testing.assert_allclose(model.betas, tbetas)
- vm = np.hstack((model1.vm.diagonal(), model2.vm.diagonal()))
- np.testing.assert_allclose(model.vm.diagonal(), vm, RTOL)
- # Columbus:
+ np.testing.assert_allclose(model.betas,tbetas)
+ vm = np.hstack((model1.vm.diagonal(),model2.vm.diagonal()))
+ np.testing.assert_allclose(model.vm.diagonal(), vm,RTOL)
+ #Columbus:
X = np.array(self.db.by_col("INC"))
- X = np.reshape(X, (49, 1))
+ X = np.reshape(X, (49,1))
yd = np.array(self.db.by_col("HOVAL"))
- yd = np.reshape(yd, (49, 1))
+ yd = np.reshape(yd, (49,1))
q = np.array(self.db.by_col("DISCBD"))
- q = np.reshape(q, (49, 1))
- reg = GM_Lag_Regimes(
- self.y,
- X,
- self.regimes,
- yend=yd,
- q=q,
- w=self.w,
- regime_lag_sep=True,
- regime_err_sep=True,
- )
- tbetas = np.array(
- [
- [42.35827477],
- [-0.09472413],
- [-0.68794223],
- [0.54482537],
- [32.24228762],
- [-0.12304063],
- [-0.46840307],
- [0.67108156],
- ]
- )
+ q = np.reshape(q, (49,1))
+ reg = GM_Lag_Regimes(self.y, X, self.regimes, yend=yd, q=q, w=self.w,regime_lag_sep=True, regime_err_sep = True)
+ tbetas = np.array([[ 42.35827477],
+ [ -0.09472413],
+ [ -0.68794223],
+ [ 0.54482537],
+ [ 32.24228762],
+ [ -0.12304063],
+ [ -0.46840307],
+ [ 0.67108156]])
np.testing.assert_allclose(tbetas, reg.betas)
- vm = np.array(
- [200.92894859, 4.56244927, -4.85603079, -2.9755413, 0.0, 0.0, 0.0, 0.0]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- e_3 = np.array([[-1.32209547], [-13.15611199], [-11.62357696]])
- np.testing.assert_allclose(reg.e_pred[0:3], e_3, RTOL)
- u_3 = np.array([[6.99250069], [-7.5665856], [-7.04753328]])
- np.testing.assert_allclose(reg.u[0:3], u_3, RTOL)
- predy_3 = np.array([[8.73347931], [26.3683396], [37.67431428]])
- np.testing.assert_allclose(reg.predy[0:3], predy_3, RTOL)
- predy_e_3 = np.array([[17.04807547], [31.95786599], [42.25035796]])
- np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3, RTOL)
- chow_regi = np.array(
- [
- [1.51825373e-01, 6.96797034e-01],
- [3.20105698e-04, 9.85725412e-01],
- [8.58836996e-02, 7.69476896e-01],
- [1.01357290e-01, 7.50206873e-01],
- ]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 0.38417230022512161, RTOL)
+ vm = np.array([ 200.92894859, 4.56244927, -4.85603079, -2.9755413 ,
+ 0. , 0. , 0. , 0. ])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ e_3 = np.array([[ -1.32209547],
+ [-13.15611199],
+ [-11.62357696]])
+ np.testing.assert_allclose(reg.e_pred[0:3], e_3,RTOL)
+ u_3 = np.array([[ 6.99250069],
+ [-7.5665856 ],
+ [-7.04753328]])
+ np.testing.assert_allclose(reg.u[0:3], u_3,RTOL)
+ predy_3 = np.array([[ 8.73347931],
+ [ 26.3683396 ],
+ [ 37.67431428]])
+ np.testing.assert_allclose(reg.predy[0:3], predy_3,RTOL)
+ predy_e_3 = np.array([[ 17.04807547],
+ [ 31.95786599],
+ [ 42.25035796]])
+ np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3,RTOL)
+ chow_regi = np.array([[ 1.51825373e-01, 6.96797034e-01],
+ [ 3.20105698e-04, 9.85725412e-01],
+ [ 8.58836996e-02, 7.69476896e-01],
+ [ 1.01357290e-01, 7.50206873e-01]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,RTOL)
+ np.testing.assert_allclose(reg.chow.joint[0], 0.38417230022512161,RTOL)
def test_fixed_const(self):
X = np.array(self.db.by_col("INC"))
- X = np.reshape(X, (49, 1))
+ X = np.reshape(X, (49,1))
yd = np.array(self.db.by_col("HOVAL"))
- yd = np.reshape(yd, (49, 1))
+ yd = np.reshape(yd, (49,1))
q = np.array(self.db.by_col("DISCBD"))
- q = np.reshape(q, (49, 1))
- reg = GM_Lag_Regimes(
- self.y,
- X,
- self.regimes,
- yend=yd,
- q=q,
- w=self.w,
- constant_regi="one",
- regime_lag_sep=False,
- regime_err_sep=False,
- )
- tbetas = np.array(
- [
- [-0.37658823],
- [-0.9666079],
- [35.5445944],
- [-0.45793559],
- [-0.24216904],
- [0.62500602],
- ]
- )
- np.testing.assert_allclose(tbetas, reg.betas, RTOL)
- vm = np.array(
- [1.4183697, -0.05975784, -0.27161863, -0.62517245, 0.02266177, 0.00312976]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- e_3 = np.array([[0.17317815], [-5.53766328], [-3.82889307]])
- np.testing.assert_allclose(reg.e_pred[0:3], e_3, RTOL)
- u_3 = np.array([[3.10025518], [-1.83150689], [-1.49598494]])
- np.testing.assert_allclose(reg.u[0:3], u_3, RTOL)
- predy_3 = np.array([[12.62572482], [20.63326089], [32.12276594]])
- np.testing.assert_allclose(reg.predy[0:3], predy_3, RTOL)
- predy_e_3 = np.array([[15.55280185], [24.33941728], [34.45567407]])
- np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3, RTOL)
- chow_regi = np.array(
- [[1.85767047e-01, 6.66463269e-01], [1.19445012e01, 5.48089036e-04]]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 12.017256217621382, RTOL)
+ q = np.reshape(q, (49,1))
+ reg = GM_Lag_Regimes(self.y, X, self.regimes, yend=yd, q=q, w=self.w, constant_regi='one', regime_lag_sep=False, regime_err_sep=False)
+ tbetas = np.array([[ -0.37658823],
+ [ -0.9666079 ],
+ [ 35.5445944 ],
+ [ -0.45793559],
+ [ -0.24216904],
+ [ 0.62500602]])
+ np.testing.assert_allclose(tbetas, reg.betas,RTOL)
+ vm = np.array([ 1.4183697 , -0.05975784, -0.27161863, -0.62517245, 0.02266177,
+ 0.00312976])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ e_3 = np.array([[ 0.17317815],
+ [-5.53766328],
+ [-3.82889307]])
+ np.testing.assert_allclose(reg.e_pred[0:3], e_3,RTOL)
+ u_3 = np.array([[ 3.10025518],
+ [-1.83150689],
+ [-1.49598494]])
+ np.testing.assert_allclose(reg.u[0:3], u_3,RTOL)
+ predy_3 = np.array([[ 12.62572482],
+ [ 20.63326089],
+ [ 32.12276594]])
+ np.testing.assert_allclose(reg.predy[0:3], predy_3,RTOL)
+ predy_e_3 = np.array([[ 15.55280185],
+ [ 24.33941728],
+ [ 34.45567407]])
+ np.testing.assert_allclose(reg.predy_e[0:3], predy_e_3,RTOL)
+ chow_regi = np.array([[ 1.85767047e-01, 6.66463269e-01],
+ [ 1.19445012e+01, 5.48089036e-04]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,RTOL)
+ np.testing.assert_allclose(reg.chow.joint[0], 12.017256217621382,RTOL)
def test_names(self):
- y_var = "CRIME"
- x_var = ["INC"]
+ y_var = 'CRIME'
+ x_var = ['INC']
x = np.array([self.db.by_col(name) for name in x_var]).T
- yd_var = ["HOVAL"]
+ yd_var = ['HOVAL']
yd = np.array([self.db.by_col(name) for name in yd_var]).T
- q_var = ["DISCBD"]
+ q_var = ['DISCBD']
q = np.array([self.db.by_col(name) for name in q_var]).T
- r_var = "NSA"
- reg = GM_Lag_Regimes(
- self.y,
- x,
- self.regimes,
- yend=yd,
- q=q,
- w=self.w,
- name_y=y_var,
- name_x=x_var,
- name_yend=yd_var,
- name_q=q_var,
- name_regimes=r_var,
- name_ds="columbus",
- name_w="columbus.gal",
- regime_lag_sep=False,
- regime_err_sep=False,
- )
- betas = np.array(
- [
- [37.87698329],
- [-0.89426982],
- [31.4714777],
- [-0.71640525],
- [-0.28494432],
- [-0.2294271],
- [0.62996544],
- ]
- )
- np.testing.assert_allclose(reg.betas, betas, RTOL)
- vm = np.array(
- [
- 109.93469618,
- -0.33407447,
- 82.05180377,
- -1.57964725,
- -1.50284553,
- -0.15634575,
- -1.43800683,
- ]
- )
- np.testing.assert_allclose(reg.vm[0], vm, RTOL)
- chow_regi = np.array(
- [
- [0.50743058, 0.47625326],
- [0.02437494, 0.87593468],
- [0.01377251, 0.9065777],
- ]
- )
- np.testing.assert_allclose(reg.chow.regi, chow_regi, RTOL)
- np.testing.assert_allclose(reg.chow.joint[0], 0.63336222761359162, RTOL)
- self.assertListEqual(reg.name_x, ["0_CONSTANT", "0_INC", "1_CONSTANT", "1_INC"])
- self.assertListEqual(reg.name_yend, ["0_HOVAL", "1_HOVAL", "_Global_W_CRIME"])
- self.assertListEqual(
- reg.name_q,
- ["0_DISCBD", "0_W_INC", "0_W_DISCBD", "1_DISCBD", "1_W_INC", "1_W_DISCBD"],
- )
+ r_var = 'NSA'
+ reg = GM_Lag_Regimes(self.y, x, self.regimes, yend=yd, q=q, w=self.w, name_y=y_var, name_x=x_var, name_yend=yd_var, name_q=q_var, name_regimes=r_var, name_ds='columbus', name_w='columbus.gal', regime_lag_sep=False, regime_err_sep=False)
+ betas = np.array([[ 37.87698329],
+ [ -0.89426982],
+ [ 31.4714777 ],
+ [ -0.71640525],
+ [ -0.28494432],
+ [ -0.2294271 ],
+ [ 0.62996544]])
+ np.testing.assert_allclose(reg.betas, betas,RTOL)
+ vm = np.array([ 109.93469618, -0.33407447, 82.05180377, -1.57964725,
+ -1.50284553, -0.15634575, -1.43800683])
+ np.testing.assert_allclose(reg.vm[0], vm,RTOL)
+ chow_regi = np.array([[ 0.50743058, 0.47625326],
+ [ 0.02437494, 0.87593468],
+ [ 0.01377251, 0.9065777 ]])
+ np.testing.assert_allclose(reg.chow.regi, chow_regi,RTOL)
+ np.testing.assert_allclose(reg.chow.joint[0], 0.63336222761359162,RTOL)
+ self.assertListEqual(reg.name_x, ['0_CONSTANT', '0_INC', '1_CONSTANT', '1_INC'])
+ self.assertListEqual(reg.name_yend, ['0_HOVAL', '1_HOVAL', '_Global_W_CRIME'])
+ self.assertListEqual(reg.name_q, ['0_DISCBD', '0_W_INC', '0_W_DISCBD', '1_DISCBD', '1_W_INC', '1_W_DISCBD'])
self.assertEqual(reg.name_y, y_var)
-
-if __name__ == "__main__":
+if __name__ == '__main__':
unittest.main()
diff --git a/spreg/twosls.py b/spreg/twosls.py
index 6a6bd68f..0fe355b1 100644
--- a/spreg/twosls.py
+++ b/spreg/twosls.py
@@ -1,11 +1,12 @@
import numpy as np
import numpy.linalg as la
-from . import summary_output as SUMMARY
from . import robust as ROBUST
from . import user_output as USER
-from .utils import spdot, sphstack, RegressionPropsY, RegressionPropsVM, set_warn
+from .utils import spdot, sphstack, RegressionPropsY, RegressionPropsVM, set_warn, get_lags
+import pandas as pd
+from .output import output, _spat_diag_out
-__author__ = "Luc Anselin luc.anselin@asu.edu, David C. Folch david.folch@asu.edu, Jing Yao jingyao@asu.edu"
+__author__ = "Luc Anselin lanselin@gmail.com, Pedro Amaral pedrovma@gmail.com, David C. Folch david.folch@asu.edu, Jing Yao jingyao@asu.edu"
__all__ = ["TSLS"]
@@ -123,10 +124,8 @@ class BaseTSLS(RegressionPropsY, RegressionPropsVM):
>>> q.append(db.by_col("DISCBD"))
>>> q = np.array(q).T
>>> reg = spreg.twosls.BaseTSLS(y, X, yd, q=q)
- >>> print(reg.betas)
- [[88.46579584]
- [ 0.5200379 ]
- [-1.58216593]]
+ >>> print(reg.betas.T)
+ [[88.46579584 0.5200379 -1.58216593]]
>>> reg = spreg.twosls.BaseTSLS(y, X, yd, q=q, robust="white")
"""
@@ -248,6 +247,9 @@ class TSLS(BaseTSLS):
gwk : pysal W object
Kernel spatial weights needed for HAC estimation. Note:
matrix must have ones along the main diagonal.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SLX type.
sig2n_k : boolean
If True, then use n-k to estimate sigma^2. If False, use n.
spat_diag : boolean
@@ -269,10 +271,13 @@ class TSLS(BaseTSLS):
Name of kernel weights matrix for use in output
name_ds : string
Name of dataset for use in output
-
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -423,11 +428,8 @@ class TSLS(BaseTSLS):
>>> from spreg import TSLS
>>> reg = TSLS(y, X, yd, q, name_x=['inc'], name_y='crime', name_yend=['hoval'], name_q=['discbd'], name_ds='columbus')
- >>> print(reg.betas)
- [[88.46579584]
- [ 0.5200379 ]
- [-1.58216593]]
-
+ >>> print(reg.betas.T)
+ [[88.46579584 0.5200379 -1.58216593]]
"""
def __init__(
@@ -439,6 +441,7 @@ def __init__(
w=None,
robust=None,
gwk=None,
+ slx_lags=0,
sig2n_k=False,
spat_diag=False,
vm=False,
@@ -449,14 +452,28 @@ def __init__(
name_w=None,
name_gwk=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x, yend, q)
y = USER.check_y(y, n)
- USER.check_weights(w, y)
USER.check_robust(robust, gwk)
+ if robust == "hac" and spat_diag:
+ set_warn(
+ self,
+ "Spatial diagnostics are not available for HAC estimation. The spatial diagnostics have been disabled for this model.",
+ )
+ spat_diag = False
USER.check_spat_diag(spat_diag, w)
x_constant, name_x, warn = USER.check_constant(x, name_x)
+ self.name_x = USER.set_name_x(name_x, x_constant)
+ if slx_lags>0:
+ USER.check_weights(w, y, w_required=True)
+ lag_x = get_lags(w, x_constant[:, 1:], slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ self.name_x += USER.set_name_spatial_lags(self.name_x[1:], slx_lags)
+ else:
+ USER.check_weights(w, y, w_required=False)
set_warn(self, warn)
BaseTSLS.__init__(
self,
@@ -469,9 +486,10 @@ def __init__(
sig2n_k=sig2n_k,
)
self.title = "TWO STAGE LEAST SQUARES"
+ if slx_lags > 0:
+ self.title += " WITH SPATIALLY LAGGED X (2SLS-SLX)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
- self.name_x = USER.set_name_x(name_x, x_constant)
self.name_yend = USER.set_name_yend(name_yend, yend)
self.name_z = self.name_x + self.name_yend
self.name_q = USER.set_name_q(name_q, q)
@@ -479,8 +497,15 @@ def __init__(
self.robust = USER.set_robust(robust)
self.name_w = USER.set_name_w(name_w, w)
self.name_gwk = USER.set_name_w(name_gwk, gwk)
- SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag)
-
+ self.output = pd.DataFrame(self.name_x + self.name_yend,
+ columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * len(self.name_yend)
+ self.output['regime'], self.output['equation'] = (0, 0)
+ if spat_diag:
+ diag_out = _spat_diag_out(self, w, 'yend')
+ else:
+ diag_out = None
+ output(reg=self, vm=vm, robust=robust, other_end=diag_out, latex=latex)
def _test():
import doctest
@@ -521,4 +546,5 @@ def _test():
name_ds="columbus",
name_w="columbus.gal",
)
+ print(tsls.output)
print(tsls.summary)
diff --git a/spreg/twosls_regimes.py b/spreg/twosls_regimes.py
index 8c4ddfcb..50a36853 100644
--- a/spreg/twosls_regimes.py
+++ b/spreg/twosls_regimes.py
@@ -1,19 +1,18 @@
import numpy as np
+import multiprocessing as mp
+import pandas as pd
from . import regimes as REGI
from . import user_output as USER
-import multiprocessing as mp
-import scipy.sparse as SP
-from .utils import sphstack, set_warn, RegressionProps_basic, spdot, sphstack
+from .utils import set_warn, RegressionProps_basic, spdot, sphstack, get_lags
from .twosls import BaseTSLS
from .robust import hac_multi
-from . import summary_output as SUMMARY
-from platform import system
+from .output import output, _spat_diag_out
"""
Two-stage Least Squares estimation with regimes.
"""
-__author__ = "Luc Anselin luc.anselin@asu.edu, Pedro V. Amaral pedro.amaral@asu.edu, David C. Folch david.folch@asu.edu"
+__author__ = "Luc Anselin, Pedro V. Amaral, David C. Folch"
class TSLS_Regimes(BaseTSLS, REGI.Regimes_Frame):
@@ -65,6 +64,10 @@ class TSLS_Regimes(BaseTSLS, REGI.Regimes_Frame):
gwk : pysal W object
Kernel spatial weights needed for HAC estimation. Note:
matrix must have ones along the main diagonal.
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the SLX type.
+ Note: WX is computed using the complete weights matrix
sig2n_k : boolean
If True, then use n-k to estimate sigma^2. If False, use n.
vm : boolean
@@ -89,9 +92,16 @@ class TSLS_Regimes(BaseTSLS, REGI.Regimes_Frame):
Name of kernel weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
+ summary : string
+ Summary of regression results and diagnostics (note: use in
+ conjunction with the print command)
betas : array
kx1 array of estimated coefficients
u : array
@@ -269,6 +279,62 @@ class TSLS_Regimes(BaseTSLS, REGI.Regimes_Frame):
array([0.38389901, 0.09963973, 0.04672091, 0.22725012, 0.49181223,
0.19630774, 0.07784587, 0.25529011])
+ >>> print(tslsr.summary)
+ REGRESSION RESULTS
+ ------------------
+
+ SUMMARY OF OUTPUT: TWO STAGE LEAST SQUARES ESTIMATION - REGIME 0
+ ----------------------------------------------------------------
+ Data set : NAT
+ Weights matrix : NAT.shp
+ Dependent Variable : 0_HR90 Number of Observations: 1673
+ Mean dependent var : 3.3416 Number of Variables : 4
+ S.D. dependent var : 4.6795 Degrees of Freedom : 1669
+ Pseudo R-squared : 0.2092
+
+ ------------------------------------------------------------------------------------
+ Variable Coefficient Std.Error z-Statistic Probability
+ ------------------------------------------------------------------------------------
+ 0_CONSTANT 3.6697356 0.3838990 9.5591172 0.0000000
+ 0_PS90 1.0695047 0.0996397 10.7337170 0.0000000
+ 0_UE90 0.1468095 0.0467209 3.1422643 0.0016765
+ 0_RD90 2.4586420 0.2272501 10.8191009 0.0000000
+ ------------------------------------------------------------------------------------
+ Instrumented: 0_RD90
+ Instruments: 0_FP89
+ Regimes variable: SOUTH
+
+ SUMMARY OF OUTPUT: TWO STAGE LEAST SQUARES ESTIMATION - REGIME 1
+ ----------------------------------------------------------------
+ Data set : NAT
+ Weights matrix : NAT.shp
+ Dependent Variable : 1_HR90 Number of Observations: 1412
+ Mean dependent var : 9.5493 Number of Variables : 4
+ S.D. dependent var : 7.0389 Degrees of Freedom : 1408
+ Pseudo R-squared : 0.2987
+
+ ------------------------------------------------------------------------------------
+ Variable Coefficient Std.Error z-Statistic Probability
+ ------------------------------------------------------------------------------------
+ 1_CONSTANT 9.5587324 0.4918122 19.4357356 0.0000000
+ 1_PS90 1.9466635 0.1963077 9.9163867 0.0000000
+ 1_UE90 -0.3081021 0.0778459 -3.9578483 0.0000756
+ 1_RD90 3.6871812 0.2552901 14.4431026 0.0000000
+ ------------------------------------------------------------------------------------
+ Instrumented: 1_RD90
+ Instruments: 1_FP89
+ Regimes variable: SOUTH
+ ------------------------------------------------------------------------------------
+ GLOBAL DIAGNOSTICS
+
+ REGIMES DIAGNOSTICS - CHOW TEST
+ VARIABLE DF VALUE PROB
+ CONSTANT 1 89.093 0.0000
+ PS90 1 15.876 0.0001
+ UE90 1 25.106 0.0000
+ RD90 1 12.920 0.0003
+ Global test 4 201.237 0.0000
+ ================================ END OF REPORT =====================================
"""
def __init__(
@@ -281,6 +347,7 @@ def __init__(
w=None,
robust=None,
gwk=None,
+ slx_lags=0,
sig2n_k=True,
spat_diag=False,
vm=False,
@@ -297,16 +364,36 @@ def __init__(
name_gwk=None,
name_ds=None,
summ=True,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
- USER.check_weights(w, y)
USER.check_robust(robust, gwk)
+ if robust == "hac":
+ if regime_err_sep:
+ set_warn(
+ self,
+ "Error by regimes is not available for HAC estimation. The error by regimes has been disabled for this model.",
+ )
+ regime_err_sep = False
+ if spat_diag:
+ set_warn(
+ self,
+ "Spatial diagnostics are not available for HAC estimation. The spatial diagnostics have been disabled for this model.",
+ )
+ spat_diag = False
USER.check_spat_diag(spat_diag, w)
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
name_x = USER.set_name_x(name_x, x_constant, constant=True)
+ if slx_lags > 0:
+ USER.check_weights(w, y, w_required=True)
+ lag_x = get_lags(w, x_constant, slx_lags)
+ x_constant = np.hstack((x_constant, lag_x))
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+ else:
+ USER.check_weights(w, y, w_required=False)
self.constant_regi = constant_regi
self.cols2regi = cols2regi
self.name_ds = USER.set_name_ds(name_ds)
@@ -324,12 +411,6 @@ def __init__(
self.regimes_set = REGI._get_regimes_set(regimes)
self.regimes = regimes
USER.check_regimes(self.regimes_set, self.n, x_constant.shape[1])
- if regime_err_sep == True and robust == "hac":
- set_warn(
- self,
- "Error by regimes is incompatible with HAC estimation for 2SLS models. Hence, the error by regimes has been disabled for this model.",
- )
- regime_err_sep = False
self.regime_err_sep = regime_err_sep
if (
regime_err_sep == True
@@ -348,6 +429,7 @@ def __init__(
regi_ids,
cores,
gwk,
+ slx_lags,
sig2n_k,
robust,
spat_diag,
@@ -355,20 +437,23 @@ def __init__(
name_x,
name_yend,
name_q,
+ summ,
+ latex
)
else:
q, self.name_q = REGI.Regimes_Frame.__init__(
self, q, regimes, constant_regi=None, cols2regi="all", names=name_q
)
- x, self.name_x = REGI.Regimes_Frame.__init__(
+ x, self.name_x, x_rlist = REGI.Regimes_Frame.__init__(
self,
x_constant,
regimes,
constant_regi,
cols2regi=cols2regi,
names=name_x,
+ rlist=True
)
- yend, self.name_yend = REGI.Regimes_Frame.__init__(
+ yend, self.name_yend, yend_rlist = REGI.Regimes_Frame.__init__(
self,
yend,
regimes,
@@ -376,13 +461,23 @@ def __init__(
cols2regi=cols2regi,
yend=True,
names=name_yend,
+ rlist=True
)
- if regime_err_sep == True and robust == None:
- robust = "white"
+ self.output = pd.DataFrame(self.name_x+self.name_yend,
+ columns=['var_names'])
+ self.output['var_type'] = ['x']*len(self.name_x)+['yend']*len(self.name_yend)
+ self.output['regime'] = x_rlist+yend_rlist
+ self.output['equation'] = 0
+
BaseTSLS.__init__(
self, y=y, x=x, yend=yend, q=q, robust=robust, gwk=gwk, sig2n_k=sig2n_k
)
- self.title = "TWO STAGE LEAST SQUARES - REGIMES"
+
+ if slx_lags == 0:
+ self.title = "TWO STAGE LEAST SQUARES - REGIMES"
+ else:
+ self.title = "TWO STAGE LEAST SQUARES WITH SPATIALLY LAGGED X (2SLS-SLX) - REGIMES"
+
if robust == "ogmm":
_optimal_weight(self, sig2n_k)
self.name_z = self.name_x + self.name_yend
@@ -390,7 +485,12 @@ def __init__(
self.chow = REGI.Chow(self)
self.robust = USER.set_robust(robust)
if summ:
- SUMMARY.TSLS(reg=self, vm=vm, w=w, spat_diag=spat_diag, regimes=True)
+ if spat_diag:
+ diag_out = _spat_diag_out(self, w, 'yend')
+ else:
+ diag_out = None
+ output(reg=self, vm=vm, robust=robust, other_end=diag_out, latex=latex)
+
def _tsls_regimes_multi(
self,
@@ -401,6 +501,7 @@ def _tsls_regimes_multi(
regi_ids,
cores,
gwk,
+ slx_lags,
sig2n_k,
robust,
spat_diag,
@@ -408,6 +509,8 @@ def _tsls_regimes_multi(
name_x,
name_yend,
name_q,
+ summ,
+ latex
):
results_p = {}
"""
@@ -421,7 +524,7 @@ def _tsls_regimes_multi(
is_win = False
"""
x_constant, name_x = REGI.check_const_regi(self, x, name_x, regi_ids)
- self.name_x_r = name_x
+ self.name_x_r = name_x + name_yend
for r in self.regimes_set:
if cores:
pool = mp.Pool(None)
@@ -444,6 +547,7 @@ def _tsls_regimes_multi(
name_q,
self.name_w,
self.name_regimes,
+ slx_lags
),
)
else:
@@ -465,6 +569,7 @@ def _tsls_regimes_multi(
name_q,
self.name_w,
self.name_regimes,
+ slx_lags
)
)
@@ -495,6 +600,7 @@ def _tsls_regimes_multi(
self.name_h,
) = ([], [], [], [], [], [])
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -526,8 +632,13 @@ def _tsls_regimes_multi(
self.name_q += results[r].name_q
self.name_z += results[r].name_z
self.name_h += results[r].name_h
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x+results[r].name_yend,
+ 'var_type': ['x']*len(results[r].name_x)+['yend']*len(results[r].name_yend),
+ 'regime': r, 'equation': r})], ignore_index=True)
+
counter += 1
self.multi = results
+
self.hac_var = sphstack(x_constant[:, 1:], q)
if robust == "hac":
hac_multi(self, gwk)
@@ -539,9 +650,12 @@ def _tsls_regimes_multi(
self.chow = REGI.Chow(self)
if spat_diag:
self._get_spat_diag_props(results, regi_ids, x_constant, yend, q)
- SUMMARY.TSLS_multi(
- reg=self, multireg=self.multi, vm=vm, spat_diag=spat_diag, regimes=True, w=w
- )
+ diag_out = _spat_diag_out(self, w, 'yend')
+ else:
+ diag_out = None
+ if summ:
+ self.output.sort_values(by='regime', inplace=True)
+ output(reg=self, vm=vm, robust=robust, other_end=diag_out, latex=latex)
def _get_spat_diag_props(self, results, regi_ids, x, yend, q):
self._cache = {}
@@ -578,6 +692,7 @@ def _work(
name_q,
name_w,
name_regimes,
+ slx_lags,
):
y_r = y[regi_ids[r]]
x_r = x[regi_ids[r]]
@@ -588,7 +703,10 @@ def _work(
else:
robust2 = robust
model = BaseTSLS(y_r, x_r, yend_r, q_r, robust=robust2, sig2n_k=sig2n_k)
- model.title = "TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" % r
+ if slx_lags == 0:
+ model.title = "TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" % r
+ else:
+ model.title = "TWO STAGE LEAST SQUARES ESTIMATION WITH SLX - REGIME %s" % r
if robust == "ogmm":
_optimal_weight(model, sig2n_k, warn=False)
model.robust = USER.set_robust(robust)
@@ -628,7 +746,7 @@ def _optimal_weight(reg, sig2n_k, warn=True):
else:
vm = fac2 * reg.n
RegressionProps_basic(reg, betas=betas, vm=vm, sig2=False)
- reg.title += " (Optimal-Weighted GMM)"
+ #reg.title += " (Optimal-Weighted GMM)"
if warn:
set_warn(
reg, "Residuals treated as homoskedastic for the purpose of diagnostics."
@@ -663,20 +781,31 @@ def _test():
q = np.array([db.by_col(name) for name in q_var]).T
r_var = "SOUTH"
regimes = db.by_col(r_var)
+ w = libpysal.weights.Rook.from_shapefile(nat.get_path("natregimes.shp"))
+ w.transform = "r"
tslsr = TSLS_Regimes(
y,
x,
yd,
q,
regimes,
+ w = w,
constant_regi="many",
- spat_diag=False,
+ spat_diag=True,
name_y=y_var,
name_x=x_var,
name_yend=yd_var,
name_q=q_var,
name_regimes=r_var,
- cols2regi=[False, True, True, True],
+ #cols2regi=[False, True, True, False],
sig2n_k=False,
+ regime_err_sep = True,
+ #robust = 'hac',
+ vm = False
)
+ print(tslsr.output)
print(tslsr.summary)
+
+
+
+
diff --git a/spreg/twosls_sp.py b/spreg/twosls_sp.py
index 47803d69..e5ff8552 100755
--- a/spreg/twosls_sp.py
+++ b/spreg/twosls_sp.py
@@ -7,8 +7,9 @@
import numpy as np
from . import twosls as TSLS
from . import user_output as USER
-from . import summary_output as SUMMARY
from .utils import set_endog, sp_att, set_warn
+import pandas as pd
+from .output import output, _spat_diag_out, _spat_pseudo_r2
__all__ = ["GM_Lag"]
@@ -44,6 +45,9 @@ class BaseGM_Lag(TSLS.BaseTSLS):
lag_q : boolean
If True, then include spatial lags of the additional
instruments (q).
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the Spatial Durbin type.
robust : string
If 'white', then a White consistent estimator of the
variance-covariance matrix is given. If 'hac', then a
@@ -172,15 +176,19 @@ def __init__(
q=None,
w=None,
w_lags=1,
+ slx_lags=0,
lag_q=True,
robust=None,
gwk=None,
sig2n_k=False,
):
- yend2, q2 = set_endog(
- y, x[:, 1:], w, yend, q, w_lags, lag_q
- ) # assumes constant in first column
+ if slx_lags > 0:
+ yend2, q2, wx = set_endog(y, x[:, 1:], w, yend, q, w_lags, lag_q, slx_lags)
+ x = np.hstack((x, wx))
+ else:
+ yend2, q2 = set_endog(y, x[:, 1:], w, yend, q, w_lags, lag_q)
+
TSLS.BaseTSLS.__init__(
self, y=y, x=x, yend=yend2, q=q2, robust=robust, gwk=gwk, sig2n_k=sig2n_k
)
@@ -216,6 +224,9 @@ class GM_Lag(BaseGM_Lag):
lag_q : boolean
If True, then include spatial lags of the additional
instruments (q).
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the Spatial Durbin type.
robust : string
If 'white', then a White consistent estimator of the
variance-covariance matrix is given. If 'hac', then a
@@ -245,9 +256,13 @@ class GM_Lag(BaseGM_Lag):
Name of kernel weights matrix for use in output
name_ds : string
Name of dataset for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -478,6 +493,7 @@ def __init__(
w=None,
w_lags=1,
lag_q=True,
+ slx_lags=0,
robust=None,
gwk=None,
sig2n_k=False,
@@ -490,13 +506,24 @@ def __init__(
name_w=None,
name_gwk=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(x, yend, q)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
USER.check_robust(robust, gwk)
+ if robust == "hac" and spat_diag:
+ set_warn(
+ self,
+ "Spatial diagnostics are not available for HAC estimation. The spatial diagnostics have been disabled for this model.",
+ )
+ spat_diag = False
x_constant, name_x, warn = USER.check_constant(x, name_x)
+
+ if slx_lags > 0:
+ name_x += USER.set_name_spatial_lags(name_x, slx_lags)
+
set_warn(self, warn)
BaseGM_Lag.__init__(
self,
@@ -506,6 +533,7 @@ def __init__(
yend=yend,
q=q,
w_lags=w_lags,
+ slx_lags=slx_lags,
robust=robust,
gwk=gwk,
lag_q=lag_q,
@@ -517,20 +545,38 @@ def __init__(
)
set_warn(self, warn)
self.title = "SPATIAL TWO STAGE LEAST SQUARES"
+ if slx_lags > 0:
+ self.title += " WITH SLX (SPATIAL DURBIN MODEL)"
self.name_ds = USER.set_name_ds(name_ds)
self.name_y = USER.set_name_y(name_y)
- self.name_x = USER.set_name_x(name_x, x_constant)
+ self.name_x = USER.set_name_x(name_x, x_constant) # name_x contains SLX terms for slx_lags > 0
self.name_yend = USER.set_name_yend(name_yend, yend)
self.name_yend.append(USER.set_name_yend_sp(self.name_y))
self.name_z = self.name_x + self.name_yend
self.name_q = USER.set_name_q(name_q, q)
- self.name_q.extend(USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q))
+ if slx_lags > 0: # need to remove all but last SLX variables from name_x
+ self.name_x0 = []
+ self.name_x0.append(self.name_x[0]) # constant
+# print(f"x0 first {self.name_x0}")
+ kx = int((self.k -self.kstar -1)/(slx_lags +1) ) # number of original exogenous vars
+ self.name_x0.extend(self.name_x[-kx:])
+# print(f"in here {self.name_x0}")
+ self.name_q.extend(USER.set_name_q_sp(self.name_x0, w_lags, self.name_q, lag_q))
+ else:
+ self.name_q.extend(USER.set_name_q_sp(self.name_x, w_lags, self.name_q, lag_q))
self.name_h = USER.set_name_h(self.name_x, self.name_q)
self.robust = USER.set_robust(robust)
self.name_w = USER.set_name_w(name_w, w)
self.name_gwk = USER.set_name_w(name_gwk, gwk)
- SUMMARY.GM_Lag(reg=self, w=w, vm=vm, spat_diag=spat_diag)
-
+ self.output = pd.DataFrame(self.name_x + self.name_yend, columns=['var_names'])
+ self.output['var_type'] = ['x'] * len(self.name_x) + ['yend'] * (len(self.name_yend)-1) + ['rho']
+ self.output['regime'], self.output['equation'] = (0, 0)
+ self.other_top = _spat_pseudo_r2(self)
+ if spat_diag:
+ diag_out = _spat_diag_out(self, w, 'yend')
+ else:
+ diag_out = None
+ output(reg=self, vm=vm, robust=robust, other_end=diag_out, latex=latex)
def _test():
import doctest
@@ -572,4 +618,5 @@ def _test():
name_ds="columbus",
name_w="columbus.gal",
)
+ print(model.output)
print(model.summary)
diff --git a/spreg/twosls_sp_regimes.py b/spreg/twosls_sp_regimes.py
index cfc0bda7..db0b23c3 100644
--- a/spreg/twosls_sp_regimes.py
+++ b/spreg/twosls_sp_regimes.py
@@ -7,12 +7,13 @@
import numpy as np
from . import regimes as REGI
from . import user_output as USER
-from . import summary_output as SUMMARY
import multiprocessing as mp
from .twosls_regimes import TSLS_Regimes, _optimal_weight
from .twosls import BaseTSLS
from .utils import set_endog, set_endog_sparse, sp_att, set_warn, sphstack, spdot
from .robust import hac_multi
+import pandas as pd
+from .output import output, _spat_diag_out, _spat_pseudo_r2
class GM_Lag_Regimes(TSLS_Regimes, REGI.Regimes_Frame):
@@ -62,6 +63,9 @@ class GM_Lag_Regimes(TSLS_Regimes, REGI.Regimes_Frame):
lag_q : boolean
If True, then include spatial lags of the additional
instruments (q).
+ slx_lags : integer
+ Number of spatial lags of X to include in the model specification.
+ If slx_lags>0, the specification becomes of the Spatial Durbin type.
regime_lag_sep: boolean
If True (default), the spatial parameter for spatial lag is also
computed according to different regimes. If False,
@@ -107,9 +111,13 @@ class GM_Lag_Regimes(TSLS_Regimes, REGI.Regimes_Frame):
Name of dataset for use in output
name_regimes : string
Name of regimes variable for use in output
+ latex : boolean
+ Specifies if summary is to be printed in latex format
Attributes
----------
+ output : dataframe
+ regression results pandas dataframe
summary : string
Summary of regression results and diagnostics (note: use in
conjunction with the print command)
@@ -378,15 +386,16 @@ class GM_Lag_Regimes(TSLS_Regimes, REGI.Regimes_Frame):
models, the argument regime_lag_sep must be set to True:
>>> model=GM_Lag_Regimes(y, x, regimes, w=w, regime_lag_sep=True, name_y=y_var, name_x=x_var, name_regimes=r_var, name_ds='NAT', name_w='NAT.shp')
- >>> print(np.hstack((np.array(model.name_z).reshape(8,1),model.betas,np.sqrt(model.vm.diagonal().reshape(8,1)))))
- [['0_CONSTANT' '1.3658476998618099' '0.3985472089832652']
- ['0_PS90' '0.8087573074246643' '0.11324884794883601']
- ['0_UE90' '0.5694681319188577' '0.04625087717092595']
- ['0_W_HR90' '-0.43424389464634316' '0.13350159258670305']
- ['1_CONSTANT' '7.90731073341874' '1.6360187416950998']
- ['1_PS90' '1.2746570332609135' '0.2470987049452741']
- ['1_UE90' '0.6016769336173784' '0.07993322102145078']
- ['1_W_HR90' '-0.2960338343846942' '0.19934459782427025']]
+ >>> print(model.output)
+ var_names coefficients std_err zt_stat prob
+ 0 0_CONSTANT 1.365848 0.398547 3.427066 0.00061
+ 1 0_PS90 0.808757 0.113249 7.141418 0.0
+ 2 0_UE90 0.569468 0.046251 12.312591 0.0
+ 3 0_W_HR90 -0.434244 0.133502 -3.252724 0.001143
+ 4 1_CONSTANT 7.907311 1.636019 4.833264 0.000001
+ 5 1_PS90 1.274657 0.247099 5.158493 0.0
+ 6 1_UE90 0.601677 0.079933 7.527245 0.0
+ 7 1_W_HR90 -0.296034 0.199345 -1.485036 0.137534
Alternatively, we can type: 'model.summary' to see the organized results output.
The class is flexible enough to accomodate a spatial lag model that,
@@ -432,6 +441,7 @@ def __init__(
q=None,
w=None,
w_lags=1,
+ slx_lags=0,
lag_q=True,
robust=None,
gwk=None,
@@ -439,7 +449,7 @@ def __init__(
spat_diag=False,
constant_regi="many",
cols2regi="all",
- regime_lag_sep=False,
+ regime_lag_sep=True,
regime_err_sep=True,
cores=False,
vm=False,
@@ -451,12 +461,32 @@ def __init__(
name_w=None,
name_gwk=None,
name_ds=None,
+ latex=False,
):
n = USER.check_arrays(y, x)
y = USER.check_y(y, n)
USER.check_weights(w, y, w_required=True)
USER.check_robust(robust, gwk)
+ if regime_lag_sep and not regime_err_sep:
+ set_warn(self, "regime_err_sep set to True when regime_lag_sep=True.")
+ regime_err_sep = True
+ if regime_err_sep and not regime_lag_sep:
+ set_warn(self, "Groupwise heteroskedasticity is not currently available for this method,\n so regime_err_sep has been set to False.")
+ regime_err_sep = False
+ if robust == "hac":
+ if regime_err_sep:
+ set_warn(
+ self,
+ "Error by regimes is not available for HAC estimation. The error by regimes has been disabled for this model.",
+ )
+ regime_err_sep = False
+ if spat_diag:
+ set_warn(
+ self,
+ "Spatial diagnostics are not available for HAC estimation. The spatial diagnostics have been disabled for this model.",
+ )
+ spat_diag = False
USER.check_spat_diag(spat_diag, w)
x_constant, name_x, warn = USER.check_constant(x, name_x, just_rem=True)
set_warn(self, warn)
@@ -464,12 +494,20 @@ def __init__(
name_y = USER.set_name_y(name_y)
name_yend = USER.set_name_yend(name_yend, yend)
name_q = USER.set_name_q(name_q, q)
- name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
self.name_regimes = USER.set_name_ds(name_regimes)
self.constant_regi = constant_regi
- self.n = n
+ if slx_lags > 0:
+ yend2, q2, wx = set_endog(y, x_constant, w, yend, q, w_lags, lag_q, slx_lags)
+ x_constant = np.hstack((x_constant, wx))
+ name_slx = USER.set_name_spatial_lags(name_x, slx_lags)
+ name_q.extend(USER.set_name_q_sp(name_slx[-len(name_x):], w_lags, name_q, lag_q, force_all=True))
+ name_x += name_slx
+ else:
+ name_q.extend(USER.set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=True))
+ yend2, q2 = yend, q
+ self.n = x_constant.shape[0]
cols2regi = REGI.check_cols2regi(
- constant_regi, cols2regi, x_constant, yend=yend, add_cons=False
+ constant_regi, cols2regi, x_constant, yend=yend2, add_cons=False
)
self.cols2regi = cols2regi
self.regimes_set = REGI._get_regimes_set(regimes)
@@ -485,8 +523,6 @@ def __init__(
self.regime_err_sep = regime_err_sep
self.regime_lag_sep = regime_lag_sep
if regime_lag_sep == True:
- if not regime_err_sep:
- raise Exception("regime_err_sep must be True when regime_lag_sep=True.")
cols2regi += [True]
w_i, regi_ids, warn = REGI.w_regimes(
w,
@@ -513,9 +549,10 @@ def __init__(
w_i,
w,
regi_ids,
- yend=yend,
- q=q,
+ yend=yend2,
+ q=q2,
w_lags=w_lags,
+ slx_lags=slx_lags,
lag_q=lag_q,
cores=cores,
robust=robust,
@@ -532,11 +569,13 @@ def __init__(
name_w=name_w,
name_gwk=name_gwk,
name_ds=name_ds,
+ latex=latex,
)
else:
if regime_lag_sep == True:
w = REGI.w_regimes_union(w, w_i, self.regimes_set)
- yend2, q2 = set_endog(y, x_constant, w, yend, q, w_lags, lag_q)
+ if slx_lags == 0:
+ yend2, q2 = set_endog(y, x_constant, w, yend2, q2, w_lags, lag_q)
name_yend.append(USER.set_name_yend_sp(name_y))
TSLS_Regimes.__init__(
self,
@@ -564,17 +603,26 @@ def __init__(
name_ds=name_ds,
summ=False,
)
- if regime_lag_sep:
+
+ if regime_lag_sep: # not currently available.
self.sp_att_reg(w_i, regi_ids, yend2[:, -1].reshape(self.n, 1))
else:
self.rho = self.betas[-1]
+ self.output.iat[-1, self.output.columns.get_loc('var_type')] = 'rho'
self.predy_e, self.e_pred, warn = sp_att(
w, self.y, self.predy, yend2[:, -1].reshape(self.n, 1), self.rho
)
set_warn(self, warn)
self.regime_lag_sep = regime_lag_sep
self.title = "SPATIAL " + self.title
- SUMMARY.GM_Lag(reg=self, w=w, vm=vm, spat_diag=spat_diag, regimes=True)
+ if slx_lags > 0:
+ self.title = " SPATIAL 2SLS WITH SLX (SPATIAL DURBIN MODEL) - REGIMES"
+ self.other_top = _spat_pseudo_r2(self)
+ if spat_diag:
+ diag_out = _spat_diag_out(self, w, 'yend')
+ else:
+ diag_out = None
+ output(reg=self, vm=vm, robust=robust, other_end=diag_out, latex=latex)
def GM_Lag_Regimes_Multi(
self,
@@ -587,6 +635,7 @@ def GM_Lag_Regimes_Multi(
yend=None,
q=None,
w_lags=1,
+ slx_lags=0,
lag_q=True,
robust=None,
gwk=None,
@@ -602,6 +651,7 @@ def GM_Lag_Regimes_Multi(
name_w=None,
name_gwk=None,
name_ds=None,
+ latex=False,
):
# pool = mp.Pool(cores)
self.name_ds = USER.set_name_ds(name_ds)
@@ -636,6 +686,7 @@ def GM_Lag_Regimes_Multi(
q,
w_r,
w_lags,
+ slx_lags,
lag_q,
robust,
sig2n_k,
@@ -659,6 +710,7 @@ def GM_Lag_Regimes_Multi(
q,
w_r,
w_lags,
+ slx_lags,
lag_q,
robust,
sig2n_k,
@@ -702,6 +754,7 @@ def GM_Lag_Regimes_Multi(
self.name_h,
) = ([], [], [], [], [], [])
counter = 0
+ self.output = pd.DataFrame(columns=['var_names', 'var_type', 'regime', 'equation'])
for r in self.regimes_set:
"""
if is_win:
@@ -752,6 +805,14 @@ def GM_Lag_Regimes_Multi(
self.hac_var[
regi_ids[r],
] = results[r].h
+ results[r].other_top = _spat_pseudo_r2(results[r])
+ results[r].other_mid = ""
+ if spat_diag:
+ results[r].other_mid += _spat_diag_out(results[r], results[r].w, 'yend')
+ self.output = pd.concat([self.output, pd.DataFrame({'var_names': results[r].name_x + results[r].name_yend,
+ 'var_type': ['x'] * len(results[r].name_x) + [
+ 'yend'] * (len(results[r].name_yend)-1) + ['rho'],
+ 'regime': r, 'equation': r})], ignore_index=True)
counter += 1
self.multi = results
if robust == "hac":
@@ -763,11 +824,9 @@ def GM_Lag_Regimes_Multi(
)
self.chow = REGI.Chow(self)
if spat_diag:
- pass
# self._get_spat_diag_props(y, x, w, yend, q, w_lags, lag_q)
- SUMMARY.GM_Lag_multi(
- reg=self, multireg=self.multi, vm=vm, spat_diag=spat_diag, regimes=True, w=w
- )
+ pass
+ output(reg=self, vm=vm, robust=robust, other_end=False, latex=latex)
def sp_att_reg(self, w_i, regi_ids, wy):
predy_e_r, e_pred_r = {}, {}
@@ -823,6 +882,7 @@ def _work(
q,
w_r,
w_lags,
+ slx_lags,
lag_q,
robust,
sig2n_k,
@@ -844,14 +904,18 @@ def _work(
q_r = q[regi_ids[r]]
else:
q_r = q
- yend_r, q_r = set_endog_sparse(y_r, x_r[:, 1:], w_r, yend_r, q_r, w_lags, lag_q)
+ if slx_lags == 0:
+ yend_r, q_r = set_endog_sparse(y_r, x_r[:, 1:], w_r, yend_r, q_r, w_lags, lag_q)
+ title = "SPATIAL TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" % r
+ else:
+ title = "SPATIAL 2SLS WITH SLX (SPATIAL DURBIN MODEL) - REGIME %s" % r
# x_constant = USER.check_constant(x_r)
if robust == "hac" or robust == "ogmm":
robust2 = None
else:
robust2 = robust
model = BaseTSLS(y_r, x_r, yend_r, q_r, robust=robust2, sig2n_k=sig2n_k)
- model.title = "SPATIAL TWO STAGE LEAST SQUARES ESTIMATION - REGIME %s" % r
+ model.title = title
if robust == "ogmm":
_optimal_weight(model, sig2n_k, warn=False)
model.rho = model.betas[-1]
@@ -917,6 +981,8 @@ def _test():
name_ds="columbus",
name_w="columbus.gal",
regime_err_sep=True,
+ regime_lag_sep = True,
robust="white",
)
+ print(model.output)
print(model.summary)
diff --git a/spreg/user_output.py b/spreg/user_output.py
index ffdb2324..cf7f9e68 100755
--- a/spreg/user_output.py
+++ b/spreg/user_output.py
@@ -1,7 +1,8 @@
"""Internal helper files for user output."""
__author__ = (
- "Luc Anselin luc.anselin@asu.edu, "
+ "Luc Anselin lanselin@gmail.com, "
+ "Pedro Amaral pedrovma@gmail.com"
"David C. Folch david.folch@asu.edu, "
"Levi John Wolf levi.john.wolf@gmail.com, "
"Jing Yao jingyao@asu.edu"
@@ -147,6 +148,23 @@ def set_name_yend_sp(name_y):
"""
return "W_" + name_y
+def set_name_spatial_lags(names, w_lags):
+ """Set the spatial lag names for multiple variables and lag orders"
+
+ Parameters
+ ----------
+ names : string
+ Original variables' names.
+
+ Returns
+ -------
+ lag_names : string
+
+ """
+ lag_names = ["W_" + s for s in names]
+ for i in range(w_lags-1):
+ lag_names += ["W" + str(i+2) + "_" + s for s in names]
+ return lag_names
def set_name_q_sp(name_x, w_lags, name_q, lag_q, force_all=False):
"""Set the spatial instrument names in regression; return generic name if user
@@ -544,8 +562,9 @@ def check_robust(robust, wk):
# NOTE: we are not checking for the case of exactly 1.0 ###
raise Exception("Off-diagonal entries must be less than 1.")
elif robust.lower() == "white" or robust.lower() == "ogmm":
- if wk:
- raise Exception("White requires that wk be set to None")
+ # if wk:
+ # raise Exception("White requires that wk be set to None")
+ pass # these options are not affected by wk
else:
raise Exception(
"invalid value passed to robust, see docs for valid options"
diff --git a/spreg/utils.py b/spreg/utils.py
index ff4f6d2c..c369c74d 100755
--- a/spreg/utils.py
+++ b/spreg/utils.py
@@ -479,7 +479,7 @@ def get_lags(w, x, w_lags):
Returns
--------
rs : array
- nxk*(w_lags+1) array with original and spatially lagged variables
+ nxk*(w_lags) array with spatially lagged variables
"""
lag = lag_spatial(w, x)
@@ -489,6 +489,43 @@ def get_lags(w, x, w_lags):
spat_lags = sphstack(spat_lags, lag)
return spat_lags
+def get_lags_split(w, x, max_lags, split_at):
+ """
+ Calculates a given order of spatial lags and all the smaller orders,
+ separated into two groups (up to split_at and above)
+
+ Parameters
+ ----------
+ w : weight
+ PySAL weights instance
+ x : array
+ nxk arrays with the variables to be lagged
+ max_lags : integer
+ Maximum order of spatial lag
+ split_at: integer
+ Separates the resulting lags into two groups: up to split_at and above
+
+ Returns
+ --------
+ rs_l,rs_h: tuple of arrays
+ rs_l: nxk*(split_at) array with spatially lagged variables up to split_at
+ rs_h: nxk*(w_lags-split_at) array with spatially lagged variables above split_at
+
+ """
+ rs_l = lag = lag_spatial(w, x)
+ rs_h = None
+ if 0 < split_at < max_lags:
+ for _ in range(split_at-1):
+ lag = lag_spatial(w, lag)
+ rs_l = sphstack(rs_l, lag)
+
+ for i in range(max_lags - split_at):
+ lag = lag_spatial(w, lag)
+ rs_h = sphstack(rs_h, lag) if i > 0 else lag
+ else:
+ raise ValueError("max_lags must be greater than split_at and split_at must be greater than 0")
+
+ return rs_l, rs_h
def inverse_prod(
w,
@@ -571,9 +608,11 @@ def inverse_prod(
except:
matrix = la.inv(np.eye(w.shape[0]) - (scalar * w))
if post_multiply:
- inv_prod = spdot(data.T, matrix)
+# inv_prod = spdot(data.T, matrix)
+ inv_prod = np.matmul(data.T,matrix) # inverse matrix is dense, wrong type in spdot
else:
- inv_prod = spdot(matrix, data)
+# inv_prod = spdot(matrix, data)
+ inv_prod = np.matmul(matrix,data)
else:
raise Exception("Invalid method selected for inversion.")
return inv_prod
@@ -623,24 +662,35 @@ def power_expansion(
return running_total
-def set_endog(y, x, w, yend, q, w_lags, lag_q):
+def set_endog(y, x, w, yend, q, w_lags, lag_q, slx_lags=0):
# Create spatial lag of y
yl = lag_spatial(w, y)
# spatial and non-spatial instruments
if issubclass(type(yend), np.ndarray):
+ if slx_lags > 0:
+ lag_x, lag_xq = get_lags_split(w, x, slx_lags+1, slx_lags)
+ else:
+ lag_xq = x
if lag_q:
- lag_vars = sphstack(x, q)
+ lag_vars = sphstack(lag_xq, q)
else:
- lag_vars = x
+ lag_vars = lag_xq
spatial_inst = get_lags(w, lag_vars, w_lags)
q = sphstack(q, spatial_inst)
yend = sphstack(yend, yl)
elif yend == None: # spatial instruments only
- q = get_lags(w, x, w_lags)
+ if slx_lags > 0:
+ lag_x, lag_xq = get_lags_split(w, x, slx_lags+w_lags, slx_lags)
+ else:
+ lag_xq = get_lags(w, x, w_lags)
+ q = lag_xq
yend = yl
else:
raise Exception("invalid value passed to yend")
- return yend, q
+ if slx_lags == 0:
+ return yend, q
+ else:
+ return yend, q, lag_x
lag = lag_spatial(w, x)
spat_lags = lag
diff --git a/versioneer.py b/versioneer.py
deleted file mode 100644
index f1c45727..00000000
--- a/versioneer.py
+++ /dev/null
@@ -1,2189 +0,0 @@
-# Version: 0.22
-
-"""The Versioneer - like a rocketeer, but for versions.
-
-The Versioneer
-==============
-
-* like a rocketeer, but for versions!
-* https://github.com/python-versioneer/python-versioneer
-* Brian Warner
-* License: Public Domain
-* Compatible with: Python 3.6, 3.7, 3.8, 3.9, 3.10 and pypy3
-* [![Latest Version][pypi-image]][pypi-url]
-* [![Build Status][travis-image]][travis-url]
-
-This is a tool for managing a recorded version number in distutils/setuptools-based
-python projects. The goal is to remove the tedious and error-prone "update
-the embedded version string" step from your release process. Making a new
-release should be as easy as recording a new tag in your version-control
-system, and maybe making new tarballs.
-
-
-## Quick Install
-
-* `pip install versioneer` to somewhere in your $PATH
-* add a `[versioneer]` section to your setup.cfg (see [Install](INSTALL.md))
-* run `versioneer install` in your source tree, commit the results
-* Verify version information with `python setup.py version`
-
-## Version Identifiers
-
-Source trees come from a variety of places:
-
-* a version-control system checkout (mostly used by developers)
-* a nightly tarball, produced by build automation
-* a snapshot tarball, produced by a web-based VCS browser, like github's
- "tarball from tag" feature
-* a release tarball, produced by "setup.py sdist", distributed through PyPI
-
-Within each source tree, the version identifier (either a string or a number,
-this tool is format-agnostic) can come from a variety of places:
-
-* ask the VCS tool itself, e.g. "git describe" (for checkouts), which knows
- about recent "tags" and an absolute revision-id
-* the name of the directory into which the tarball was unpacked
-* an expanded VCS keyword ($Id$, etc)
-* a `_version.py` created by some earlier build step
-
-For released software, the version identifier is closely related to a VCS
-tag. Some projects use tag names that include more than just the version
-string (e.g. "myproject-1.2" instead of just "1.2"), in which case the tool
-needs to strip the tag prefix to extract the version identifier. For
-unreleased software (between tags), the version identifier should provide
-enough information to help developers recreate the same tree, while also
-giving them an idea of roughly how old the tree is (after version 1.2, before
-version 1.3). Many VCS systems can report a description that captures this,
-for example `git describe --tags --dirty --always` reports things like
-"0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the
-0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has
-uncommitted changes).
-
-The version identifier is used for multiple purposes:
-
-* to allow the module to self-identify its version: `myproject.__version__`
-* to choose a name and prefix for a 'setup.py sdist' tarball
-
-## Theory of Operation
-
-Versioneer works by adding a special `_version.py` file into your source
-tree, where your `__init__.py` can import it. This `_version.py` knows how to
-dynamically ask the VCS tool for version information at import time.
-
-`_version.py` also contains `$Revision$` markers, and the installation
-process marks `_version.py` to have this marker rewritten with a tag name
-during the `git archive` command. As a result, generated tarballs will
-contain enough information to get the proper version.
-
-To allow `setup.py` to compute a version too, a `versioneer.py` is added to
-the top level of your source tree, next to `setup.py` and the `setup.cfg`
-that configures it. This overrides several distutils/setuptools commands to
-compute the version when invoked, and changes `setup.py build` and `setup.py
-sdist` to replace `_version.py` with a small static file that contains just
-the generated version data.
-
-## Installation
-
-See [INSTALL.md](./INSTALL.md) for detailed installation instructions.
-
-## Version-String Flavors
-
-Code which uses Versioneer can learn about its version string at runtime by
-importing `_version` from your main `__init__.py` file and running the
-`get_versions()` function. From the "outside" (e.g. in `setup.py`), you can
-import the top-level `versioneer.py` and run `get_versions()`.
-
-Both functions return a dictionary with different flavors of version
-information:
-
-* `['version']`: A condensed version string, rendered using the selected
- style. This is the most commonly used value for the project's version
- string. The default "pep440" style yields strings like `0.11`,
- `0.11+2.g1076c97`, or `0.11+2.g1076c97.dirty`. See the "Styles" section
- below for alternative styles.
-
-* `['full-revisionid']`: detailed revision identifier. For Git, this is the
- full SHA1 commit id, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac".
-
-* `['date']`: Date and time of the latest `HEAD` commit. For Git, it is the
- commit date in ISO 8601 format. This will be None if the date is not
- available.
-
-* `['dirty']`: a boolean, True if the tree has uncommitted changes. Note that
- this is only accurate if run in a VCS checkout, otherwise it is likely to
- be False or None
-
-* `['error']`: if the version string could not be computed, this will be set
- to a string describing the problem, otherwise it will be None. It may be
- useful to throw an exception in setup.py if this is set, to avoid e.g.
- creating tarballs with a version string of "unknown".
-
-Some variants are more useful than others. Including `full-revisionid` in a
-bug report should allow developers to reconstruct the exact code being tested
-(or indicate the presence of local changes that should be shared with the
-developers). `version` is suitable for display in an "about" box or a CLI
-`--version` output: it can be easily compared against release notes and lists
-of bugs fixed in various releases.
-
-The installer adds the following text to your `__init__.py` to place a basic
-version in `YOURPROJECT.__version__`:
-
- from ._version import get_versions
- __version__ = get_versions()['version']
- del get_versions
-
-## Styles
-
-The setup.cfg `style=` configuration controls how the VCS information is
-rendered into a version string.
-
-The default style, "pep440", produces a PEP440-compliant string, equal to the
-un-prefixed tag name for actual releases, and containing an additional "local
-version" section with more detail for in-between builds. For Git, this is
-TAG[+DISTANCE.gHEX[.dirty]] , using information from `git describe --tags
---dirty --always`. For example "0.11+2.g1076c97.dirty" indicates that the
-tree is like the "1076c97" commit but has uncommitted changes (".dirty"), and
-that this commit is two revisions ("+2") beyond the "0.11" tag. For released
-software (exactly equal to a known tag), the identifier will only contain the
-stripped tag, e.g. "0.11".
-
-Other styles are available. See [details.md](details.md) in the Versioneer
-source tree for descriptions.
-
-## Debugging
-
-Versioneer tries to avoid fatal errors: if something goes wrong, it will tend
-to return a version of "0+unknown". To investigate the problem, run `setup.py
-version`, which will run the version-lookup code in a verbose mode, and will
-display the full contents of `get_versions()` (including the `error` string,
-which may help identify what went wrong).
-
-## Known Limitations
-
-Some situations are known to cause problems for Versioneer. This details the
-most significant ones. More can be found on Github
-[issues page](https://github.com/python-versioneer/python-versioneer/issues).
-
-### Subprojects
-
-Versioneer has limited support for source trees in which `setup.py` is not in
-the root directory (e.g. `setup.py` and `.git/` are *not* siblings). The are
-two common reasons why `setup.py` might not be in the root:
-
-* Source trees which contain multiple subprojects, such as
- [Buildbot](https://github.com/buildbot/buildbot), which contains both
- "master" and "slave" subprojects, each with their own `setup.py`,
- `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI
- distributions (and upload multiple independently-installable tarballs).
-* Source trees whose main purpose is to contain a C library, but which also
- provide bindings to Python (and perhaps other languages) in subdirectories.
-
-Versioneer will look for `.git` in parent directories, and most operations
-should get the right version string. However `pip` and `setuptools` have bugs
-and implementation details which frequently cause `pip install .` from a
-subproject directory to fail to find a correct version string (so it usually
-defaults to `0+unknown`).
-
-`pip install --editable .` should work correctly. `setup.py install` might
-work too.
-
-Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in
-some later version.
-
-[Bug #38](https://github.com/python-versioneer/python-versioneer/issues/38) is tracking
-this issue. The discussion in
-[PR #61](https://github.com/python-versioneer/python-versioneer/pull/61) describes the
-issue from the Versioneer side in more detail.
-[pip PR#3176](https://github.com/pypa/pip/pull/3176) and
-[pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve
-pip to let Versioneer work correctly.
-
-Versioneer-0.16 and earlier only looked for a `.git` directory next to the
-`setup.cfg`, so subprojects were completely unsupported with those releases.
-
-### Editable installs with setuptools <= 18.5
-
-`setup.py develop` and `pip install --editable .` allow you to install a
-project into a virtualenv once, then continue editing the source code (and
-test) without re-installing after every change.
-
-"Entry-point scripts" (`setup(entry_points={"console_scripts": ..})`) are a
-convenient way to specify executable scripts that should be installed along
-with the python package.
-
-These both work as expected when using modern setuptools. When using
-setuptools-18.5 or earlier, however, certain operations will cause
-`pkg_resources.DistributionNotFound` errors when running the entrypoint
-script, which must be resolved by re-installing the package. This happens
-when the install happens with one version, then the egg_info data is
-regenerated while a different version is checked out. Many setup.py commands
-cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into
-a different virtualenv), so this can be surprising.
-
-[Bug #83](https://github.com/python-versioneer/python-versioneer/issues/83) describes
-this one, but upgrading to a newer version of setuptools should probably
-resolve it.
-
-
-## Updating Versioneer
-
-To upgrade your project to a new release of Versioneer, do the following:
-
-* install the new Versioneer (`pip install -U versioneer` or equivalent)
-* edit `setup.cfg`, if necessary, to include any new configuration settings
- indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details.
-* re-run `versioneer install` in your source tree, to replace
- `SRC/_version.py`
-* commit any changed files
-
-## Future Directions
-
-This tool is designed to make it easily extended to other version-control
-systems: all VCS-specific components are in separate directories like
-src/git/ . The top-level `versioneer.py` script is assembled from these
-components by running make-versioneer.py . In the future, make-versioneer.py
-will take a VCS name as an argument, and will construct a version of
-`versioneer.py` that is specific to the given VCS. It might also take the
-configuration arguments that are currently provided manually during
-installation by editing setup.py . Alternatively, it might go the other
-direction and include code from all supported VCS systems, reducing the
-number of intermediate scripts.
-
-## Similar projects
-
-* [setuptools_scm](https://github.com/pypa/setuptools_scm/) - a non-vendored build-time
- dependency
-* [minver](https://github.com/jbweston/miniver) - a lightweight reimplementation of
- versioneer
-* [versioningit](https://github.com/jwodder/versioningit) - a PEP 518-based setuptools
- plugin
-
-## License
-
-To make Versioneer easier to embed, all its code is dedicated to the public
-domain. The `_version.py` that it creates is also in the public domain.
-Specifically, both are released under the Creative Commons "Public Domain
-Dedication" license (CC0-1.0), as described in
-https://creativecommons.org/publicdomain/zero/1.0/ .
-
-[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg
-[pypi-url]: https://pypi.python.org/pypi/versioneer/
-[travis-image]:
-https://img.shields.io/travis/com/python-versioneer/python-versioneer.svg
-[travis-url]: https://travis-ci.com/github/python-versioneer/python-versioneer
-
-"""
-# pylint:disable=invalid-name,import-outside-toplevel,missing-function-docstring
-# pylint:disable=missing-class-docstring,too-many-branches,too-many-statements
-# pylint:disable=raise-missing-from,too-many-lines,too-many-locals,import-error
-# pylint:disable=too-few-public-methods,redefined-outer-name,consider-using-with
-# pylint:disable=attribute-defined-outside-init,too-many-arguments
-
-import configparser
-import errno
-import json
-import os
-import re
-import subprocess
-import sys
-from typing import Callable, Dict
-import functools
-
-
-class VersioneerConfig:
- """Container for Versioneer configuration parameters."""
-
-
-def get_root():
- """Get the project root directory.
-
- We require that all commands are run from the project root, i.e. the
- directory that contains setup.py, setup.cfg, and versioneer.py .
- """
- root = os.path.realpath(os.path.abspath(os.getcwd()))
- setup_py = os.path.join(root, "setup.py")
- versioneer_py = os.path.join(root, "versioneer.py")
- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)):
- # allow 'python path/to/setup.py COMMAND'
- root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0])))
- setup_py = os.path.join(root, "setup.py")
- versioneer_py = os.path.join(root, "versioneer.py")
- if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)):
- err = (
- "Versioneer was unable to run the project root directory. "
- "Versioneer requires setup.py to be executed from "
- "its immediate directory (like 'python setup.py COMMAND'), "
- "or in a way that lets it use sys.argv[0] to find the root "
- "(like 'python path/to/setup.py COMMAND')."
- )
- raise VersioneerBadRootError(err)
- try:
- # Certain runtime workflows (setup.py install/develop in a setuptools
- # tree) execute all dependencies in a single python process, so
- # "versioneer" may be imported multiple times, and python's shared
- # module-import table will cache the first one. So we can't use
- # os.path.dirname(__file__), as that will find whichever
- # versioneer.py was first imported, even in later projects.
- my_path = os.path.realpath(os.path.abspath(__file__))
- me_dir = os.path.normcase(os.path.splitext(my_path)[0])
- vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0])
- if me_dir != vsr_dir:
- print(
- "Warning: build in %s is using versioneer.py from %s"
- % (os.path.dirname(my_path), versioneer_py)
- )
- except NameError:
- pass
- return root
-
-
-def get_config_from_root(root):
- """Read the project setup.cfg file to determine Versioneer config."""
- # This might raise OSError (if setup.cfg is missing), or
- # configparser.NoSectionError (if it lacks a [versioneer] section), or
- # configparser.NoOptionError (if it lacks "VCS="). See the docstring at
- # the top of versioneer.py for instructions on writing your setup.cfg .
- setup_cfg = os.path.join(root, "setup.cfg")
- parser = configparser.ConfigParser()
- with open(setup_cfg, "r") as cfg_file:
- parser.read_file(cfg_file)
- VCS = parser.get("versioneer", "VCS") # mandatory
-
- # Dict-like interface for non-mandatory entries
- section = parser["versioneer"]
-
- cfg = VersioneerConfig()
- cfg.VCS = VCS
- cfg.style = section.get("style", "")
- cfg.versionfile_source = section.get("versionfile_source")
- cfg.versionfile_build = section.get("versionfile_build")
- cfg.tag_prefix = section.get("tag_prefix")
- if cfg.tag_prefix in ("''", '""'):
- cfg.tag_prefix = ""
- cfg.parentdir_prefix = section.get("parentdir_prefix")
- cfg.verbose = section.get("verbose")
- return cfg
-
-
-class NotThisMethod(Exception):
- """Exception raised if a method is not valid for the current scenario."""
-
-
-# these dictionaries contain VCS-specific tools
-LONG_VERSION_PY: Dict[str, str] = {}
-HANDLERS: Dict[str, Dict[str, Callable]] = {}
-
-
-def register_vcs_handler(vcs, method): # decorator
- """Create decorator to mark a method as the handler of a VCS."""
-
- def decorate(f):
- """Store f in HANDLERS[vcs][method]."""
- HANDLERS.setdefault(vcs, {})[method] = f
- return f
-
- return decorate
-
-
-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, env=None):
- """Call the given command(s)."""
- assert isinstance(commands, list)
- process = None
-
- popen_kwargs = {}
- if sys.platform == "win32":
- # This hides the console window if pythonw.exe is used
- startupinfo = subprocess.STARTUPINFO()
- startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
- popen_kwargs["startupinfo"] = startupinfo
-
- for command in commands:
- try:
- dispcmd = str([command] + args)
- # remember shell=False, so use git.cmd on windows, not just git
- process = subprocess.Popen(
- [command] + args,
- cwd=cwd,
- env=env,
- stdout=subprocess.PIPE,
- stderr=(subprocess.PIPE if hide_stderr else None),
- **popen_kwargs,
- )
- break
- except OSError:
- e = sys.exc_info()[1]
- if e.errno == errno.ENOENT:
- continue
- if verbose:
- print("unable to run %s" % dispcmd)
- print(e)
- return None, None
- else:
- if verbose:
- print("unable to find command, tried %s" % (commands,))
- return None, None
- stdout = process.communicate()[0].strip().decode()
- if process.returncode != 0:
- if verbose:
- print("unable to run %s (error)" % dispcmd)
- print("stdout was %s" % stdout)
- return None, process.returncode
- return stdout, process.returncode
-
-
-LONG_VERSION_PY[
- "git"
-] = r'''
-# This file helps to compute a version number in source trees obtained from
-# git-archive tarball (such as those provided by githubs download-from-tag
-# feature). Distribution tarballs (built by setup.py sdist) and build
-# directories (produced by setup.py build) will contain a much shorter file
-# that just contains the computed version number.
-
-# This file is released into the public domain. Generated by
-# versioneer-0.22 (https://github.com/python-versioneer/python-versioneer)
-
-"""Git implementation of _version.py."""
-
-import errno
-import os
-import re
-import subprocess
-import sys
-from typing import Callable, Dict
-import functools
-
-
-def get_keywords():
- """Get the keywords needed to look up the version information."""
- # these strings will be replaced by git during git-archive.
- # setup.py/versioneer.py will grep for the variable names, so they must
- # each be defined on a line of their own. _version.py will just call
- # get_keywords().
- git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s"
- git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s"
- git_date = "%(DOLLAR)sFormat:%%ci%(DOLLAR)s"
- keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
- return keywords
-
-
-class VersioneerConfig:
- """Container for Versioneer configuration parameters."""
-
-
-def get_config():
- """Create, populate and return the VersioneerConfig() object."""
- # these strings are filled in when 'setup.py versioneer' creates
- # _version.py
- cfg = VersioneerConfig()
- cfg.VCS = "git"
- cfg.style = "%(STYLE)s"
- cfg.tag_prefix = "%(TAG_PREFIX)s"
- cfg.parentdir_prefix = "%(PARENTDIR_PREFIX)s"
- cfg.versionfile_source = "%(VERSIONFILE_SOURCE)s"
- cfg.verbose = False
- return cfg
-
-
-class NotThisMethod(Exception):
- """Exception raised if a method is not valid for the current scenario."""
-
-
-LONG_VERSION_PY: Dict[str, str] = {}
-HANDLERS: Dict[str, Dict[str, Callable]] = {}
-
-
-def register_vcs_handler(vcs, method): # decorator
- """Create decorator to mark a method as the handler of a VCS."""
- def decorate(f):
- """Store f in HANDLERS[vcs][method]."""
- if vcs not in HANDLERS:
- HANDLERS[vcs] = {}
- HANDLERS[vcs][method] = f
- return f
- return decorate
-
-
-def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
- env=None):
- """Call the given command(s)."""
- assert isinstance(commands, list)
- process = None
-
- popen_kwargs = {}
- if sys.platform == "win32":
- # This hides the console window if pythonw.exe is used
- startupinfo = subprocess.STARTUPINFO()
- startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
- popen_kwargs["startupinfo"] = startupinfo
-
- for command in commands:
- try:
- dispcmd = str([command] + args)
- # remember shell=False, so use git.cmd on windows, not just git
- process = subprocess.Popen([command] + args, cwd=cwd, env=env,
- stdout=subprocess.PIPE,
- stderr=(subprocess.PIPE if hide_stderr
- else None), **popen_kwargs)
- break
- except OSError:
- e = sys.exc_info()[1]
- if e.errno == errno.ENOENT:
- continue
- if verbose:
- print("unable to run %%s" %% dispcmd)
- print(e)
- return None, None
- else:
- if verbose:
- print("unable to find command, tried %%s" %% (commands,))
- return None, None
- stdout = process.communicate()[0].strip().decode()
- if process.returncode != 0:
- if verbose:
- print("unable to run %%s (error)" %% dispcmd)
- print("stdout was %%s" %% stdout)
- return None, process.returncode
- return stdout, process.returncode
-
-
-def versions_from_parentdir(parentdir_prefix, root, verbose):
- """Try to determine the version from the parent directory name.
-
- Source tarballs conventionally unpack into a directory that includes both
- the project name and a version string. We will also support searching up
- two directory levels for an appropriately named parent directory
- """
- rootdirs = []
-
- for _ in range(3):
- dirname = os.path.basename(root)
- if dirname.startswith(parentdir_prefix):
- return {"version": dirname[len(parentdir_prefix):],
- "full-revisionid": None,
- "dirty": False, "error": None, "date": None}
- rootdirs.append(root)
- root = os.path.dirname(root) # up a level
-
- if verbose:
- print("Tried directories %%s but none started with prefix %%s" %%
- (str(rootdirs), parentdir_prefix))
- raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
-
-
-@register_vcs_handler("git", "get_keywords")
-def git_get_keywords(versionfile_abs):
- """Extract version information from the given file."""
- # the code embedded in _version.py can just fetch the value of these
- # keywords. When used from setup.py, we don't want to import _version.py,
- # so we do it with a regexp instead. This function is not used from
- # _version.py.
- keywords = {}
- try:
- with open(versionfile_abs, "r") as fobj:
- for line in fobj:
- if line.strip().startswith("git_refnames ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["refnames"] = mo.group(1)
- if line.strip().startswith("git_full ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["full"] = mo.group(1)
- if line.strip().startswith("git_date ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["date"] = mo.group(1)
- except OSError:
- pass
- return keywords
-
-
-@register_vcs_handler("git", "keywords")
-def git_versions_from_keywords(keywords, tag_prefix, verbose):
- """Get version information from git keywords."""
- if "refnames" not in keywords:
- raise NotThisMethod("Short version file found")
- date = keywords.get("date")
- if date is not None:
- # Use only the last line. Previous lines may contain GPG signature
- # information.
- date = date.splitlines()[-1]
-
- # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant
- # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601
- # -like" string, which we must then edit to make compliant), because
- # it's been around since git-1.5.3, and it's too difficult to
- # discover which version we're using, or to work around using an
- # older one.
- date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
- refnames = keywords["refnames"].strip()
- if refnames.startswith("$Format"):
- if verbose:
- print("keywords are unexpanded, not using")
- raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
- refs = {r.strip() for r in refnames.strip("()").split(",")}
- # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
- # just "foo-1.0". If we see a "tag: " prefix, prefer those.
- TAG = "tag: "
- tags = {r[len(TAG):] for r in refs if r.startswith(TAG)}
- if not tags:
- # Either we're using git < 1.8.3, or there really are no tags. We use
- # a heuristic: assume all version tags have a digit. The old git %%d
- # expansion behaves like git log --decorate=short and strips out the
- # refs/heads/ and refs/tags/ prefixes that would let us distinguish
- # between branches and tags. By ignoring refnames without digits, we
- # filter out many common branch names like "release" and
- # "stabilization", as well as "HEAD" and "master".
- tags = {r for r in refs if re.search(r'\d', r)}
- if verbose:
- print("discarding '%%s', no digits" %% ",".join(refs - tags))
- if verbose:
- print("likely tags: %%s" %% ",".join(sorted(tags)))
- for ref in sorted(tags):
- # sorting will prefer e.g. "2.0" over "2.0rc1"
- if ref.startswith(tag_prefix):
- r = ref[len(tag_prefix):]
- # Filter out refs that exactly match prefix or that don't start
- # with a number once the prefix is stripped (mostly a concern
- # when prefix is '')
- if not re.match(r'\d', r):
- continue
- if verbose:
- print("picking %%s" %% r)
- return {"version": r,
- "full-revisionid": keywords["full"].strip(),
- "dirty": False, "error": None,
- "date": date}
- # no suitable tags, so version is "0+unknown", but full hex is still there
- if verbose:
- print("no suitable tags, using unknown + full revision id")
- return {"version": "0+unknown",
- "full-revisionid": keywords["full"].strip(),
- "dirty": False, "error": "no suitable tags", "date": None}
-
-
-@register_vcs_handler("git", "pieces_from_vcs")
-def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
- """Get version from 'git describe' in the root of the source tree.
-
- This only gets called if the git-archive 'subst' keywords were *not*
- expanded, and _version.py hasn't already been rewritten with a short
- version string, meaning we're inside a checked out source tree.
- """
- GITS = ["git"]
- if sys.platform == "win32":
- GITS = ["git.cmd", "git.exe"]
-
- # GIT_DIR can interfere with correct operation of Versioneer.
- # It may be intended to be passed to the Versioneer-versioned project,
- # but that should not change where we get our version from.
- env = os.environ.copy()
- env.pop("GIT_DIR", None)
- runner = functools.partial(runner, env=env)
-
- _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root,
- hide_stderr=True)
- if rc != 0:
- if verbose:
- print("Directory %%s not under git control" %% root)
- raise NotThisMethod("'git rev-parse --git-dir' returned error")
-
- MATCH_ARGS = ["--match", "%%s*" %% tag_prefix] if tag_prefix else []
-
- # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
- # if there isn't one, this yields HEX[-dirty] (no NUM)
- describe_out, rc = runner(GITS, ["describe", "--tags", "--dirty",
- "--always", "--long", *MATCH_ARGS],
- cwd=root)
- # --long was added in git-1.5.5
- if describe_out is None:
- raise NotThisMethod("'git describe' failed")
- describe_out = describe_out.strip()
- full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
- if full_out is None:
- raise NotThisMethod("'git rev-parse' failed")
- full_out = full_out.strip()
-
- pieces = {}
- pieces["long"] = full_out
- pieces["short"] = full_out[:7] # maybe improved later
- pieces["error"] = None
-
- branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"],
- cwd=root)
- # --abbrev-ref was added in git-1.6.3
- if rc != 0 or branch_name is None:
- raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
- branch_name = branch_name.strip()
-
- if branch_name == "HEAD":
- # If we aren't exactly on a branch, pick a branch which represents
- # the current commit. If all else fails, we are on a branchless
- # commit.
- branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
- # --contains was added in git-1.5.4
- if rc != 0 or branches is None:
- raise NotThisMethod("'git branch --contains' returned error")
- branches = branches.split("\n")
-
- # Remove the first line if we're running detached
- if "(" in branches[0]:
- branches.pop(0)
-
- # Strip off the leading "* " from the list of branches.
- branches = [branch[2:] for branch in branches]
- if "master" in branches:
- branch_name = "master"
- elif not branches:
- branch_name = None
- else:
- # Pick the first branch that is returned. Good or bad.
- branch_name = branches[0]
-
- pieces["branch"] = branch_name
-
- # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
- # TAG might have hyphens.
- git_describe = describe_out
-
- # look for -dirty suffix
- dirty = git_describe.endswith("-dirty")
- pieces["dirty"] = dirty
- if dirty:
- git_describe = git_describe[:git_describe.rindex("-dirty")]
-
- # now we have TAG-NUM-gHEX or HEX
-
- if "-" in git_describe:
- # TAG-NUM-gHEX
- mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe)
- if not mo:
- # unparsable. Maybe git-describe is misbehaving?
- pieces["error"] = ("unable to parse git-describe output: '%%s'"
- %% describe_out)
- return pieces
-
- # tag
- full_tag = mo.group(1)
- if not full_tag.startswith(tag_prefix):
- if verbose:
- fmt = "tag '%%s' doesn't start with prefix '%%s'"
- print(fmt %% (full_tag, tag_prefix))
- pieces["error"] = ("tag '%%s' doesn't start with prefix '%%s'"
- %% (full_tag, tag_prefix))
- return pieces
- pieces["closest-tag"] = full_tag[len(tag_prefix):]
-
- # distance: number of commits since tag
- pieces["distance"] = int(mo.group(2))
-
- # commit: short hex revision ID
- pieces["short"] = mo.group(3)
-
- else:
- # HEX: no tags
- pieces["closest-tag"] = None
- count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
- pieces["distance"] = int(count_out) # total number of commits
-
- # commit date: see ISO-8601 comment in git_versions_from_keywords()
- date = runner(GITS, ["show", "-s", "--format=%%ci", "HEAD"], cwd=root)[0].strip()
- # Use only the last line. Previous lines may contain GPG signature
- # information.
- date = date.splitlines()[-1]
- pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
-
- return pieces
-
-
-def plus_or_dot(pieces):
- """Return a + if we don't already have one, else return a ."""
- if "+" in pieces.get("closest-tag", ""):
- return "."
- return "+"
-
-
-def render_pep440(pieces):
- """Build up version string, with post-release "local version identifier".
-
- Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
- get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty
-
- Exceptions:
- 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += plus_or_dot(pieces)
- rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0+untagged.%%d.g%%s" %% (pieces["distance"],
- pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def render_pep440_branch(pieces):
- """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
-
- The ".dev0" means not master branch. Note that .dev0 sorts backwards
- (a feature branch will appear "older" than the master branch).
-
- Exceptions:
- 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0"
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += "+untagged.%%d.g%%s" %% (pieces["distance"],
- pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def pep440_split_post(ver):
- """Split pep440 version string at the post-release segment.
-
- Returns the release segments before the post-release and the
- post-release version number (or -1 if no post-release segment is present).
- """
- vc = str.split(ver, ".post")
- return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
-
-
-def render_pep440_pre(pieces):
- """TAG[.postN.devDISTANCE] -- No -dirty.
-
- Exceptions:
- 1: no tags. 0.post0.devDISTANCE
- """
- if pieces["closest-tag"]:
- if pieces["distance"]:
- # update the post release segment
- tag_version, post_version = pep440_split_post(pieces["closest-tag"])
- rendered = tag_version
- if post_version is not None:
- rendered += ".post%%d.dev%%d" %% (post_version+1, pieces["distance"])
- else:
- rendered += ".post0.dev%%d" %% (pieces["distance"])
- else:
- # no commits, use the tag as the version
- rendered = pieces["closest-tag"]
- else:
- # exception #1
- rendered = "0.post0.dev%%d" %% pieces["distance"]
- return rendered
-
-
-def render_pep440_post(pieces):
- """TAG[.postDISTANCE[.dev0]+gHEX] .
-
- The ".dev0" means dirty. Note that .dev0 sorts backwards
- (a dirty tree will appear "older" than the corresponding clean one),
- but you shouldn't be releasing software with -dirty anyways.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%%d" %% pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "g%%s" %% pieces["short"]
- else:
- # exception #1
- rendered = "0.post%%d" %% pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- rendered += "+g%%s" %% pieces["short"]
- return rendered
-
-
-def render_pep440_post_branch(pieces):
- """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
-
- The ".dev0" means not master branch.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%%d" %% pieces["distance"]
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "g%%s" %% pieces["short"]
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0.post%%d" %% pieces["distance"]
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += "+g%%s" %% pieces["short"]
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def render_pep440_old(pieces):
- """TAG[.postDISTANCE[.dev0]] .
-
- The ".dev0" means dirty.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%%d" %% pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- else:
- # exception #1
- rendered = "0.post%%d" %% pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- return rendered
-
-
-def render_git_describe(pieces):
- """TAG[-DISTANCE-gHEX][-dirty].
-
- Like 'git describe --tags --dirty --always'.
-
- Exceptions:
- 1: no tags. HEX[-dirty] (note: no 'g' prefix)
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"]:
- rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"])
- else:
- # exception #1
- rendered = pieces["short"]
- if pieces["dirty"]:
- rendered += "-dirty"
- return rendered
-
-
-def render_git_describe_long(pieces):
- """TAG-DISTANCE-gHEX[-dirty].
-
- Like 'git describe --tags --dirty --always -long'.
- The distance/hash is unconditional.
-
- Exceptions:
- 1: no tags. HEX[-dirty] (note: no 'g' prefix)
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"])
- else:
- # exception #1
- rendered = pieces["short"]
- if pieces["dirty"]:
- rendered += "-dirty"
- return rendered
-
-
-def render(pieces, style):
- """Render the given version pieces into the requested style."""
- if pieces["error"]:
- return {"version": "unknown",
- "full-revisionid": pieces.get("long"),
- "dirty": None,
- "error": pieces["error"],
- "date": None}
-
- if not style or style == "default":
- style = "pep440" # the default
-
- if style == "pep440":
- rendered = render_pep440(pieces)
- elif style == "pep440-branch":
- rendered = render_pep440_branch(pieces)
- elif style == "pep440-pre":
- rendered = render_pep440_pre(pieces)
- elif style == "pep440-post":
- rendered = render_pep440_post(pieces)
- elif style == "pep440-post-branch":
- rendered = render_pep440_post_branch(pieces)
- elif style == "pep440-old":
- rendered = render_pep440_old(pieces)
- elif style == "git-describe":
- rendered = render_git_describe(pieces)
- elif style == "git-describe-long":
- rendered = render_git_describe_long(pieces)
- else:
- raise ValueError("unknown style '%%s'" %% style)
-
- return {"version": rendered, "full-revisionid": pieces["long"],
- "dirty": pieces["dirty"], "error": None,
- "date": pieces.get("date")}
-
-
-def get_versions():
- """Get version information or return default if unable to do so."""
- # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have
- # __file__, we can work backwards from there to the root. Some
- # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which
- # case we can only use expanded keywords.
-
- cfg = get_config()
- verbose = cfg.verbose
-
- try:
- return git_versions_from_keywords(get_keywords(), cfg.tag_prefix,
- verbose)
- except NotThisMethod:
- pass
-
- try:
- root = os.path.realpath(__file__)
- # versionfile_source is the relative path from the top of the source
- # tree (where the .git directory might live) to this file. Invert
- # this to find the root from __file__.
- for _ in cfg.versionfile_source.split('/'):
- root = os.path.dirname(root)
- except NameError:
- return {"version": "0+unknown", "full-revisionid": None,
- "dirty": None,
- "error": "unable to find root of source tree",
- "date": None}
-
- try:
- pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose)
- return render(pieces, cfg.style)
- except NotThisMethod:
- pass
-
- try:
- if cfg.parentdir_prefix:
- return versions_from_parentdir(cfg.parentdir_prefix, root, verbose)
- except NotThisMethod:
- pass
-
- return {"version": "0+unknown", "full-revisionid": None,
- "dirty": None,
- "error": "unable to compute version", "date": None}
-'''
-
-
-@register_vcs_handler("git", "get_keywords")
-def git_get_keywords(versionfile_abs):
- """Extract version information from the given file."""
- # the code embedded in _version.py can just fetch the value of these
- # keywords. When used from setup.py, we don't want to import _version.py,
- # so we do it with a regexp instead. This function is not used from
- # _version.py.
- keywords = {}
- try:
- with open(versionfile_abs, "r") as fobj:
- for line in fobj:
- if line.strip().startswith("git_refnames ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["refnames"] = mo.group(1)
- if line.strip().startswith("git_full ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["full"] = mo.group(1)
- if line.strip().startswith("git_date ="):
- mo = re.search(r'=\s*"(.*)"', line)
- if mo:
- keywords["date"] = mo.group(1)
- except OSError:
- pass
- return keywords
-
-
-@register_vcs_handler("git", "keywords")
-def git_versions_from_keywords(keywords, tag_prefix, verbose):
- """Get version information from git keywords."""
- if "refnames" not in keywords:
- raise NotThisMethod("Short version file found")
- date = keywords.get("date")
- if date is not None:
- # Use only the last line. Previous lines may contain GPG signature
- # information.
- date = date.splitlines()[-1]
-
- # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant
- # datestamp. However we prefer "%ci" (which expands to an "ISO-8601
- # -like" string, which we must then edit to make compliant), because
- # it's been around since git-1.5.3, and it's too difficult to
- # discover which version we're using, or to work around using an
- # older one.
- date = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
- refnames = keywords["refnames"].strip()
- if refnames.startswith("$Format"):
- if verbose:
- print("keywords are unexpanded, not using")
- raise NotThisMethod("unexpanded keywords, not a git-archive tarball")
- refs = {r.strip() for r in refnames.strip("()").split(",")}
- # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of
- # just "foo-1.0". If we see a "tag: " prefix, prefer those.
- TAG = "tag: "
- tags = {r[len(TAG) :] for r in refs if r.startswith(TAG)}
- if not tags:
- # Either we're using git < 1.8.3, or there really are no tags. We use
- # a heuristic: assume all version tags have a digit. The old git %d
- # expansion behaves like git log --decorate=short and strips out the
- # refs/heads/ and refs/tags/ prefixes that would let us distinguish
- # between branches and tags. By ignoring refnames without digits, we
- # filter out many common branch names like "release" and
- # "stabilization", as well as "HEAD" and "master".
- tags = {r for r in refs if re.search(r"\d", r)}
- if verbose:
- print("discarding '%s', no digits" % ",".join(refs - tags))
- if verbose:
- print("likely tags: %s" % ",".join(sorted(tags)))
- for ref in sorted(tags):
- # sorting will prefer e.g. "2.0" over "2.0rc1"
- if ref.startswith(tag_prefix):
- r = ref[len(tag_prefix) :]
- # Filter out refs that exactly match prefix or that don't start
- # with a number once the prefix is stripped (mostly a concern
- # when prefix is '')
- if not re.match(r"\d", r):
- continue
- if verbose:
- print("picking %s" % r)
- return {
- "version": r,
- "full-revisionid": keywords["full"].strip(),
- "dirty": False,
- "error": None,
- "date": date,
- }
- # no suitable tags, so version is "0+unknown", but full hex is still there
- if verbose:
- print("no suitable tags, using unknown + full revision id")
- return {
- "version": "0+unknown",
- "full-revisionid": keywords["full"].strip(),
- "dirty": False,
- "error": "no suitable tags",
- "date": None,
- }
-
-
-@register_vcs_handler("git", "pieces_from_vcs")
-def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
- """Get version from 'git describe' in the root of the source tree.
-
- This only gets called if the git-archive 'subst' keywords were *not*
- expanded, and _version.py hasn't already been rewritten with a short
- version string, meaning we're inside a checked out source tree.
- """
- GITS = ["git"]
- if sys.platform == "win32":
- GITS = ["git.cmd", "git.exe"]
-
- # GIT_DIR can interfere with correct operation of Versioneer.
- # It may be intended to be passed to the Versioneer-versioned project,
- # but that should not change where we get our version from.
- env = os.environ.copy()
- env.pop("GIT_DIR", None)
- runner = functools.partial(runner, env=env)
-
- _, rc = runner(GITS, ["rev-parse", "--git-dir"], cwd=root, hide_stderr=True)
- if rc != 0:
- if verbose:
- print("Directory %s not under git control" % root)
- raise NotThisMethod("'git rev-parse --git-dir' returned error")
-
- MATCH_ARGS = ["--match", "%s*" % tag_prefix] if tag_prefix else []
-
- # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty]
- # if there isn't one, this yields HEX[-dirty] (no NUM)
- describe_out, rc = runner(
- GITS,
- ["describe", "--tags", "--dirty", "--always", "--long", *MATCH_ARGS],
- cwd=root,
- )
- # --long was added in git-1.5.5
- if describe_out is None:
- raise NotThisMethod("'git describe' failed")
- describe_out = describe_out.strip()
- full_out, rc = runner(GITS, ["rev-parse", "HEAD"], cwd=root)
- if full_out is None:
- raise NotThisMethod("'git rev-parse' failed")
- full_out = full_out.strip()
-
- pieces = {}
- pieces["long"] = full_out
- pieces["short"] = full_out[:7] # maybe improved later
- pieces["error"] = None
-
- branch_name, rc = runner(GITS, ["rev-parse", "--abbrev-ref", "HEAD"], cwd=root)
- # --abbrev-ref was added in git-1.6.3
- if rc != 0 or branch_name is None:
- raise NotThisMethod("'git rev-parse --abbrev-ref' returned error")
- branch_name = branch_name.strip()
-
- if branch_name == "HEAD":
- # If we aren't exactly on a branch, pick a branch which represents
- # the current commit. If all else fails, we are on a branchless
- # commit.
- branches, rc = runner(GITS, ["branch", "--contains"], cwd=root)
- # --contains was added in git-1.5.4
- if rc != 0 or branches is None:
- raise NotThisMethod("'git branch --contains' returned error")
- branches = branches.split("\n")
-
- # Remove the first line if we're running detached
- if "(" in branches[0]:
- branches.pop(0)
-
- # Strip off the leading "* " from the list of branches.
- branches = [branch[2:] for branch in branches]
- if "master" in branches:
- branch_name = "master"
- elif not branches:
- branch_name = None
- else:
- # Pick the first branch that is returned. Good or bad.
- branch_name = branches[0]
-
- pieces["branch"] = branch_name
-
- # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty]
- # TAG might have hyphens.
- git_describe = describe_out
-
- # look for -dirty suffix
- dirty = git_describe.endswith("-dirty")
- pieces["dirty"] = dirty
- if dirty:
- git_describe = git_describe[: git_describe.rindex("-dirty")]
-
- # now we have TAG-NUM-gHEX or HEX
-
- if "-" in git_describe:
- # TAG-NUM-gHEX
- mo = re.search(r"^(.+)-(\d+)-g([0-9a-f]+)$", git_describe)
- if not mo:
- # unparsable. Maybe git-describe is misbehaving?
- pieces["error"] = "unable to parse git-describe output: '%s'" % describe_out
- return pieces
-
- # tag
- full_tag = mo.group(1)
- if not full_tag.startswith(tag_prefix):
- if verbose:
- fmt = "tag '%s' doesn't start with prefix '%s'"
- print(fmt % (full_tag, tag_prefix))
- pieces["error"] = "tag '%s' doesn't start with prefix '%s'" % (
- full_tag,
- tag_prefix,
- )
- return pieces
- pieces["closest-tag"] = full_tag[len(tag_prefix) :]
-
- # distance: number of commits since tag
- pieces["distance"] = int(mo.group(2))
-
- # commit: short hex revision ID
- pieces["short"] = mo.group(3)
-
- else:
- # HEX: no tags
- pieces["closest-tag"] = None
- count_out, rc = runner(GITS, ["rev-list", "HEAD", "--count"], cwd=root)
- pieces["distance"] = int(count_out) # total number of commits
-
- # commit date: see ISO-8601 comment in git_versions_from_keywords()
- date = runner(GITS, ["show", "-s", "--format=%ci", "HEAD"], cwd=root)[0].strip()
- # Use only the last line. Previous lines may contain GPG signature
- # information.
- date = date.splitlines()[-1]
- pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1)
-
- return pieces
-
-
-def do_vcs_install(manifest_in, versionfile_source, ipy):
- """Git-specific installation logic for Versioneer.
-
- For Git, this means creating/changing .gitattributes to mark _version.py
- for export-subst keyword substitution.
- """
- GITS = ["git"]
- if sys.platform == "win32":
- GITS = ["git.cmd", "git.exe"]
- files = [manifest_in, versionfile_source]
- if ipy:
- files.append(ipy)
- try:
- my_path = __file__
- if my_path.endswith(".pyc") or my_path.endswith(".pyo"):
- my_path = os.path.splitext(my_path)[0] + ".py"
- versioneer_file = os.path.relpath(my_path)
- except NameError:
- versioneer_file = "versioneer.py"
- files.append(versioneer_file)
- present = False
- try:
- with open(".gitattributes", "r") as fobj:
- for line in fobj:
- if line.strip().startswith(versionfile_source):
- if "export-subst" in line.strip().split()[1:]:
- present = True
- break
- except OSError:
- pass
- if not present:
- with open(".gitattributes", "a+") as fobj:
- fobj.write(f"{versionfile_source} export-subst\n")
- files.append(".gitattributes")
- run_command(GITS, ["add", "--"] + files)
-
-
-def versions_from_parentdir(parentdir_prefix, root, verbose):
- """Try to determine the version from the parent directory name.
-
- Source tarballs conventionally unpack into a directory that includes both
- the project name and a version string. We will also support searching up
- two directory levels for an appropriately named parent directory
- """
- rootdirs = []
-
- for _ in range(3):
- dirname = os.path.basename(root)
- if dirname.startswith(parentdir_prefix):
- return {
- "version": dirname[len(parentdir_prefix) :],
- "full-revisionid": None,
- "dirty": False,
- "error": None,
- "date": None,
- }
- rootdirs.append(root)
- root = os.path.dirname(root) # up a level
-
- if verbose:
- print(
- "Tried directories %s but none started with prefix %s"
- % (str(rootdirs), parentdir_prefix)
- )
- raise NotThisMethod("rootdir doesn't start with parentdir_prefix")
-
-
-SHORT_VERSION_PY = """
-# This file was generated by 'versioneer.py' (0.22) from
-# revision-control system data, or from the parent directory name of an
-# unpacked source archive. Distribution tarballs contain a pre-generated copy
-# of this file.
-
-import json
-
-version_json = '''
-%s
-''' # END VERSION_JSON
-
-
-def get_versions():
- return json.loads(version_json)
-"""
-
-
-def versions_from_file(filename):
- """Try to determine the version from _version.py if present."""
- try:
- with open(filename) as f:
- contents = f.read()
- except OSError:
- raise NotThisMethod("unable to read _version.py")
- mo = re.search(
- r"version_json = '''\n(.*)''' # END VERSION_JSON", contents, re.M | re.S
- )
- if not mo:
- mo = re.search(
- r"version_json = '''\r\n(.*)''' # END VERSION_JSON", contents, re.M | re.S
- )
- if not mo:
- raise NotThisMethod("no version_json in _version.py")
- return json.loads(mo.group(1))
-
-
-def write_to_version_file(filename, versions):
- """Write the given version number to the given _version.py file."""
- os.unlink(filename)
- contents = json.dumps(versions, sort_keys=True, indent=1, separators=(",", ": "))
- with open(filename, "w") as f:
- f.write(SHORT_VERSION_PY % contents)
-
- print("set %s to '%s'" % (filename, versions["version"]))
-
-
-def plus_or_dot(pieces):
- """Return a + if we don't already have one, else return a ."""
- if "+" in pieces.get("closest-tag", ""):
- return "."
- return "+"
-
-
-def render_pep440(pieces):
- """Build up version string, with post-release "local version identifier".
-
- Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you
- get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty
-
- Exceptions:
- 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += plus_or_dot(pieces)
- rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def render_pep440_branch(pieces):
- """TAG[[.dev0]+DISTANCE.gHEX[.dirty]] .
-
- The ".dev0" means not master branch. Note that .dev0 sorts backwards
- (a feature branch will appear "older" than the master branch).
-
- Exceptions:
- 1: no tags. 0[.dev0]+untagged.DISTANCE.gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0"
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += "+untagged.%d.g%s" % (pieces["distance"], pieces["short"])
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def pep440_split_post(ver):
- """Split pep440 version string at the post-release segment.
-
- Returns the release segments before the post-release and the
- post-release version number (or -1 if no post-release segment is present).
- """
- vc = str.split(ver, ".post")
- return vc[0], int(vc[1] or 0) if len(vc) == 2 else None
-
-
-def render_pep440_pre(pieces):
- """TAG[.postN.devDISTANCE] -- No -dirty.
-
- Exceptions:
- 1: no tags. 0.post0.devDISTANCE
- """
- if pieces["closest-tag"]:
- if pieces["distance"]:
- # update the post release segment
- tag_version, post_version = pep440_split_post(pieces["closest-tag"])
- rendered = tag_version
- if post_version is not None:
- rendered += ".post%d.dev%d" % (post_version + 1, pieces["distance"])
- else:
- rendered += ".post0.dev%d" % (pieces["distance"])
- else:
- # no commits, use the tag as the version
- rendered = pieces["closest-tag"]
- else:
- # exception #1
- rendered = "0.post0.dev%d" % pieces["distance"]
- return rendered
-
-
-def render_pep440_post(pieces):
- """TAG[.postDISTANCE[.dev0]+gHEX] .
-
- The ".dev0" means dirty. Note that .dev0 sorts backwards
- (a dirty tree will appear "older" than the corresponding clean one),
- but you shouldn't be releasing software with -dirty anyways.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "g%s" % pieces["short"]
- else:
- # exception #1
- rendered = "0.post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- rendered += "+g%s" % pieces["short"]
- return rendered
-
-
-def render_pep440_post_branch(pieces):
- """TAG[.postDISTANCE[.dev0]+gHEX[.dirty]] .
-
- The ".dev0" means not master branch.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]+gHEX[.dirty]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%d" % pieces["distance"]
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += plus_or_dot(pieces)
- rendered += "g%s" % pieces["short"]
- if pieces["dirty"]:
- rendered += ".dirty"
- else:
- # exception #1
- rendered = "0.post%d" % pieces["distance"]
- if pieces["branch"] != "master":
- rendered += ".dev0"
- rendered += "+g%s" % pieces["short"]
- if pieces["dirty"]:
- rendered += ".dirty"
- return rendered
-
-
-def render_pep440_old(pieces):
- """TAG[.postDISTANCE[.dev0]] .
-
- The ".dev0" means dirty.
-
- Exceptions:
- 1: no tags. 0.postDISTANCE[.dev0]
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"] or pieces["dirty"]:
- rendered += ".post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- else:
- # exception #1
- rendered = "0.post%d" % pieces["distance"]
- if pieces["dirty"]:
- rendered += ".dev0"
- return rendered
-
-
-def render_git_describe(pieces):
- """TAG[-DISTANCE-gHEX][-dirty].
-
- Like 'git describe --tags --dirty --always'.
-
- Exceptions:
- 1: no tags. HEX[-dirty] (note: no 'g' prefix)
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- if pieces["distance"]:
- rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
- else:
- # exception #1
- rendered = pieces["short"]
- if pieces["dirty"]:
- rendered += "-dirty"
- return rendered
-
-
-def render_git_describe_long(pieces):
- """TAG-DISTANCE-gHEX[-dirty].
-
- Like 'git describe --tags --dirty --always -long'.
- The distance/hash is unconditional.
-
- Exceptions:
- 1: no tags. HEX[-dirty] (note: no 'g' prefix)
- """
- if pieces["closest-tag"]:
- rendered = pieces["closest-tag"]
- rendered += "-%d-g%s" % (pieces["distance"], pieces["short"])
- else:
- # exception #1
- rendered = pieces["short"]
- if pieces["dirty"]:
- rendered += "-dirty"
- return rendered
-
-
-def render(pieces, style):
- """Render the given version pieces into the requested style."""
- if pieces["error"]:
- return {
- "version": "unknown",
- "full-revisionid": pieces.get("long"),
- "dirty": None,
- "error": pieces["error"],
- "date": None,
- }
-
- if not style or style == "default":
- style = "pep440" # the default
-
- if style == "pep440":
- rendered = render_pep440(pieces)
- elif style == "pep440-branch":
- rendered = render_pep440_branch(pieces)
- elif style == "pep440-pre":
- rendered = render_pep440_pre(pieces)
- elif style == "pep440-post":
- rendered = render_pep440_post(pieces)
- elif style == "pep440-post-branch":
- rendered = render_pep440_post_branch(pieces)
- elif style == "pep440-old":
- rendered = render_pep440_old(pieces)
- elif style == "git-describe":
- rendered = render_git_describe(pieces)
- elif style == "git-describe-long":
- rendered = render_git_describe_long(pieces)
- else:
- raise ValueError("unknown style '%s'" % style)
-
- return {
- "version": rendered,
- "full-revisionid": pieces["long"],
- "dirty": pieces["dirty"],
- "error": None,
- "date": pieces.get("date"),
- }
-
-
-class VersioneerBadRootError(Exception):
- """The project root directory is unknown or missing key files."""
-
-
-def get_versions(verbose=False):
- """Get the project version from whatever source is available.
-
- Returns dict with two keys: 'version' and 'full'.
- """
- if "versioneer" in sys.modules:
- # see the discussion in cmdclass.py:get_cmdclass()
- del sys.modules["versioneer"]
-
- root = get_root()
- cfg = get_config_from_root(root)
-
- assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg"
- handlers = HANDLERS.get(cfg.VCS)
- assert handlers, "unrecognized VCS '%s'" % cfg.VCS
- verbose = verbose or cfg.verbose
- assert (
- cfg.versionfile_source is not None
- ), "please set versioneer.versionfile_source"
- assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix"
-
- versionfile_abs = os.path.join(root, cfg.versionfile_source)
-
- # extract version from first of: _version.py, VCS command (e.g. 'git
- # describe'), parentdir. This is meant to work for developers using a
- # source checkout, for users of a tarball created by 'setup.py sdist',
- # and for users of a tarball/zipball created by 'git archive' or github's
- # download-from-tag feature or the equivalent in other VCSes.
-
- get_keywords_f = handlers.get("get_keywords")
- from_keywords_f = handlers.get("keywords")
- if get_keywords_f and from_keywords_f:
- try:
- keywords = get_keywords_f(versionfile_abs)
- ver = from_keywords_f(keywords, cfg.tag_prefix, verbose)
- if verbose:
- print("got version from expanded keyword %s" % ver)
- return ver
- except NotThisMethod:
- pass
-
- try:
- ver = versions_from_file(versionfile_abs)
- if verbose:
- print("got version from file %s %s" % (versionfile_abs, ver))
- return ver
- except NotThisMethod:
- pass
-
- from_vcs_f = handlers.get("pieces_from_vcs")
- if from_vcs_f:
- try:
- pieces = from_vcs_f(cfg.tag_prefix, root, verbose)
- ver = render(pieces, cfg.style)
- if verbose:
- print("got version from VCS %s" % ver)
- return ver
- except NotThisMethod:
- pass
-
- try:
- if cfg.parentdir_prefix:
- ver = versions_from_parentdir(cfg.parentdir_prefix, root, verbose)
- if verbose:
- print("got version from parentdir %s" % ver)
- return ver
- except NotThisMethod:
- pass
-
- if verbose:
- print("unable to compute version")
-
- return {
- "version": "0+unknown",
- "full-revisionid": None,
- "dirty": None,
- "error": "unable to compute version",
- "date": None,
- }
-
-
-def get_version():
- """Get the short version string for this project."""
- return get_versions()["version"]
-
-
-def get_cmdclass(cmdclass=None):
- """Get the custom setuptools/distutils subclasses used by Versioneer.
-
- If the package uses a different cmdclass (e.g. one from numpy), it
- should be provide as an argument.
- """
- if "versioneer" in sys.modules:
- del sys.modules["versioneer"]
- # this fixes the "python setup.py develop" case (also 'install' and
- # 'easy_install .'), in which subdependencies of the main project are
- # built (using setup.py bdist_egg) in the same python process. Assume
- # a main project A and a dependency B, which use different versions
- # of Versioneer. A's setup.py imports A's Versioneer, leaving it in
- # sys.modules by the time B's setup.py is executed, causing B to run
- # with the wrong versioneer. Setuptools wraps the sub-dep builds in a
- # sandbox that restores sys.modules to it's pre-build state, so the
- # parent is protected against the child's "import versioneer". By
- # removing ourselves from sys.modules here, before the child build
- # happens, we protect the child from the parent's versioneer too.
- # Also see https://github.com/python-versioneer/python-versioneer/issues/52
-
- cmds = {} if cmdclass is None else cmdclass.copy()
-
- # we add "version" to both distutils and setuptools
- try:
- from setuptools import Command
- except ImportError:
- from distutils.core import Command
-
- class cmd_version(Command):
- description = "report generated version string"
- user_options = []
- boolean_options = []
-
- def initialize_options(self):
- pass
-
- def finalize_options(self):
- pass
-
- def run(self):
- vers = get_versions(verbose=True)
- print("Version: %s" % vers["version"])
- print(" full-revisionid: %s" % vers.get("full-revisionid"))
- print(" dirty: %s" % vers.get("dirty"))
- print(" date: %s" % vers.get("date"))
- if vers["error"]:
- print(" error: %s" % vers["error"])
-
- cmds["version"] = cmd_version
-
- # we override "build_py" in both distutils and setuptools
- #
- # most invocation pathways end up running build_py:
- # distutils/build -> build_py
- # distutils/install -> distutils/build ->..
- # setuptools/bdist_wheel -> distutils/install ->..
- # setuptools/bdist_egg -> distutils/install_lib -> build_py
- # setuptools/install -> bdist_egg ->..
- # setuptools/develop -> ?
- # pip install:
- # copies source tree to a tempdir before running egg_info/etc
- # if .git isn't copied too, 'git describe' will fail
- # then does setup.py bdist_wheel, or sometimes setup.py install
- # setup.py egg_info -> ?
-
- # we override different "build_py" commands for both environments
- if "build_py" in cmds:
- _build_py = cmds["build_py"]
- elif "setuptools" in sys.modules:
- from setuptools.command.build_py import build_py as _build_py
- else:
- from distutils.command.build_py import build_py as _build_py
-
- class cmd_build_py(_build_py):
- def run(self):
- root = get_root()
- cfg = get_config_from_root(root)
- versions = get_versions()
- _build_py.run(self)
- # now locate _version.py in the new build/ directory and replace
- # it with an updated value
- if cfg.versionfile_build:
- target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build)
- print("UPDATING %s" % target_versionfile)
- write_to_version_file(target_versionfile, versions)
-
- cmds["build_py"] = cmd_build_py
-
- if "build_ext" in cmds:
- _build_ext = cmds["build_ext"]
- elif "setuptools" in sys.modules:
- from setuptools.command.build_ext import build_ext as _build_ext
- else:
- from distutils.command.build_ext import build_ext as _build_ext
-
- class cmd_build_ext(_build_ext):
- def run(self):
- root = get_root()
- cfg = get_config_from_root(root)
- versions = get_versions()
- _build_ext.run(self)
- if self.inplace:
- # build_ext --inplace will only build extensions in
- # build/lib<..> dir with no _version.py to write to.
- # As in place builds will already have a _version.py
- # in the module dir, we do not need to write one.
- return
- # now locate _version.py in the new build/ directory and replace
- # it with an updated value
- target_versionfile = os.path.join(self.build_lib, cfg.versionfile_build)
- print("UPDATING %s" % target_versionfile)
- write_to_version_file(target_versionfile, versions)
-
- cmds["build_ext"] = cmd_build_ext
-
- if "cx_Freeze" in sys.modules: # cx_freeze enabled?
- from cx_Freeze.dist import build_exe as _build_exe
-
- # nczeczulin reports that py2exe won't like the pep440-style string
- # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g.
- # setup(console=[{
- # "version": versioneer.get_version().split("+", 1)[0], # FILEVERSION
- # "product_version": versioneer.get_version(),
- # ...
-
- class cmd_build_exe(_build_exe):
- def run(self):
- root = get_root()
- cfg = get_config_from_root(root)
- versions = get_versions()
- target_versionfile = cfg.versionfile_source
- print("UPDATING %s" % target_versionfile)
- write_to_version_file(target_versionfile, versions)
-
- _build_exe.run(self)
- os.unlink(target_versionfile)
- with open(cfg.versionfile_source, "w") as f:
- LONG = LONG_VERSION_PY[cfg.VCS]
- f.write(
- LONG
- % {
- "DOLLAR": "$",
- "STYLE": cfg.style,
- "TAG_PREFIX": cfg.tag_prefix,
- "PARENTDIR_PREFIX": cfg.parentdir_prefix,
- "VERSIONFILE_SOURCE": cfg.versionfile_source,
- }
- )
-
- cmds["build_exe"] = cmd_build_exe
- del cmds["build_py"]
-
- if "py2exe" in sys.modules: # py2exe enabled?
- from py2exe.distutils_buildexe import py2exe as _py2exe
-
- class cmd_py2exe(_py2exe):
- def run(self):
- root = get_root()
- cfg = get_config_from_root(root)
- versions = get_versions()
- target_versionfile = cfg.versionfile_source
- print("UPDATING %s" % target_versionfile)
- write_to_version_file(target_versionfile, versions)
-
- _py2exe.run(self)
- os.unlink(target_versionfile)
- with open(cfg.versionfile_source, "w") as f:
- LONG = LONG_VERSION_PY[cfg.VCS]
- f.write(
- LONG
- % {
- "DOLLAR": "$",
- "STYLE": cfg.style,
- "TAG_PREFIX": cfg.tag_prefix,
- "PARENTDIR_PREFIX": cfg.parentdir_prefix,
- "VERSIONFILE_SOURCE": cfg.versionfile_source,
- }
- )
-
- cmds["py2exe"] = cmd_py2exe
-
- # we override different "sdist" commands for both environments
- if "sdist" in cmds:
- _sdist = cmds["sdist"]
- elif "setuptools" in sys.modules:
- from setuptools.command.sdist import sdist as _sdist
- else:
- from distutils.command.sdist import sdist as _sdist
-
- class cmd_sdist(_sdist):
- def run(self):
- versions = get_versions()
- self._versioneer_generated_versions = versions
- # unless we update this, the command will keep using the old
- # version
- self.distribution.metadata.version = versions["version"]
- return _sdist.run(self)
-
- def make_release_tree(self, base_dir, files):
- root = get_root()
- cfg = get_config_from_root(root)
- _sdist.make_release_tree(self, base_dir, files)
- # now locate _version.py in the new base_dir directory
- # (remembering that it may be a hardlink) and replace it with an
- # updated value
- target_versionfile = os.path.join(base_dir, cfg.versionfile_source)
- print("UPDATING %s" % target_versionfile)
- write_to_version_file(
- target_versionfile, self._versioneer_generated_versions
- )
-
- cmds["sdist"] = cmd_sdist
-
- return cmds
-
-
-CONFIG_ERROR = """
-setup.cfg is missing the necessary Versioneer configuration. You need
-a section like:
-
- [versioneer]
- VCS = git
- style = pep440
- versionfile_source = src/myproject/_version.py
- versionfile_build = myproject/_version.py
- tag_prefix =
- parentdir_prefix = myproject-
-
-You will also need to edit your setup.py to use the results:
-
- import versioneer
- setup(version=versioneer.get_version(),
- cmdclass=versioneer.get_cmdclass(), ...)
-
-Please read the docstring in ./versioneer.py for configuration instructions,
-edit setup.cfg, and re-run the installer or 'python versioneer.py setup'.
-"""
-
-SAMPLE_CONFIG = """
-# See the docstring in versioneer.py for instructions. Note that you must
-# re-run 'versioneer.py setup' after changing this section, and commit the
-# resulting files.
-
-[versioneer]
-#VCS = git
-#style = pep440
-#versionfile_source =
-#versionfile_build =
-#tag_prefix =
-#parentdir_prefix =
-
-"""
-
-OLD_SNIPPET = """
-from ._version import get_versions
-__version__ = get_versions()['version']
-del get_versions
-"""
-
-INIT_PY_SNIPPET = """
-from . import {0}
-__version__ = {0}.get_versions()['version']
-"""
-
-
-def do_setup():
- """Do main VCS-independent setup function for installing Versioneer."""
- root = get_root()
- try:
- cfg = get_config_from_root(root)
- except (OSError, configparser.NoSectionError, configparser.NoOptionError) as e:
- if isinstance(e, (OSError, configparser.NoSectionError)):
- print("Adding sample versioneer config to setup.cfg", file=sys.stderr)
- with open(os.path.join(root, "setup.cfg"), "a") as f:
- f.write(SAMPLE_CONFIG)
- print(CONFIG_ERROR, file=sys.stderr)
- return 1
-
- print(" creating %s" % cfg.versionfile_source)
- with open(cfg.versionfile_source, "w") as f:
- LONG = LONG_VERSION_PY[cfg.VCS]
- f.write(
- LONG
- % {
- "DOLLAR": "$",
- "STYLE": cfg.style,
- "TAG_PREFIX": cfg.tag_prefix,
- "PARENTDIR_PREFIX": cfg.parentdir_prefix,
- "VERSIONFILE_SOURCE": cfg.versionfile_source,
- }
- )
-
- ipy = os.path.join(os.path.dirname(cfg.versionfile_source), "__init__.py")
- if os.path.exists(ipy):
- try:
- with open(ipy, "r") as f:
- old = f.read()
- except OSError:
- old = ""
- module = os.path.splitext(os.path.basename(cfg.versionfile_source))[0]
- snippet = INIT_PY_SNIPPET.format(module)
- if OLD_SNIPPET in old:
- print(" replacing boilerplate in %s" % ipy)
- with open(ipy, "w") as f:
- f.write(old.replace(OLD_SNIPPET, snippet))
- elif snippet not in old:
- print(" appending to %s" % ipy)
- with open(ipy, "a") as f:
- f.write(snippet)
- else:
- print(" %s unmodified" % ipy)
- else:
- print(" %s doesn't exist, ok" % ipy)
- ipy = None
-
- # Make sure both the top-level "versioneer.py" and versionfile_source
- # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so
- # they'll be copied into source distributions. Pip won't be able to
- # install the package without this.
- manifest_in = os.path.join(root, "MANIFEST.in")
- simple_includes = set()
- try:
- with open(manifest_in, "r") as f:
- for line in f:
- if line.startswith("include "):
- for include in line.split()[1:]:
- simple_includes.add(include)
- except OSError:
- pass
- # That doesn't cover everything MANIFEST.in can do
- # (http://docs.python.org/2/distutils/sourcedist.html#commands), so
- # it might give some false negatives. Appending redundant 'include'
- # lines is safe, though.
- if "versioneer.py" not in simple_includes:
- print(" appending 'versioneer.py' to MANIFEST.in")
- with open(manifest_in, "a") as f:
- f.write("include versioneer.py\n")
- else:
- print(" 'versioneer.py' already in MANIFEST.in")
- if cfg.versionfile_source not in simple_includes:
- print(
- " appending versionfile_source ('%s') to MANIFEST.in"
- % cfg.versionfile_source
- )
- with open(manifest_in, "a") as f:
- f.write("include %s\n" % cfg.versionfile_source)
- else:
- print(" versionfile_source already in MANIFEST.in")
-
- # Make VCS-specific changes. For git, this means creating/changing
- # .gitattributes to mark _version.py for export-subst keyword
- # substitution.
- do_vcs_install(manifest_in, cfg.versionfile_source, ipy)
- return 0
-
-
-def scan_setup_py():
- """Validate the contents of setup.py against Versioneer's expectations."""
- found = set()
- setters = False
- errors = 0
- with open("setup.py", "r") as f:
- for line in f.readlines():
- if "import versioneer" in line:
- found.add("import")
- if "versioneer.get_cmdclass()" in line:
- found.add("cmdclass")
- if "versioneer.get_version()" in line:
- found.add("get_version")
- if "versioneer.VCS" in line:
- setters = True
- if "versioneer.versionfile_source" in line:
- setters = True
- if len(found) != 3:
- print("")
- print("Your setup.py appears to be missing some important items")
- print("(but I might be wrong). Please make sure it has something")
- print("roughly like the following:")
- print("")
- print(" import versioneer")
- print(" setup( version=versioneer.get_version(),")
- print(" cmdclass=versioneer.get_cmdclass(), ...)")
- print("")
- errors += 1
- if setters:
- print("You should remove lines like 'versioneer.VCS = ' and")
- print("'versioneer.versionfile_source = ' . This configuration")
- print("now lives in setup.cfg, and should be removed from setup.py")
- print("")
- errors += 1
- return errors
-
-
-if __name__ == "__main__":
- cmd = sys.argv[1]
- if cmd == "setup":
- errors = do_setup()
- errors += scan_setup_py()
- if errors:
- sys.exit(1)