Repository: Urban-Analytics-Technology-Platform/poppusher (language: python)

Issue:
Meta Issue: Trialing Dagster
We have agreed to trial [Dagster](https://dagster.io/) to structure the workflow within popgetter. See [meeting notes here](https://hackmd.io/4-rDxn7KTmqIFgeMZcXcOQ)

This issue is to capture all of the different tasks involved in this.

# Exploration

Within that meeting, we committed to trying three use cases for Dagster before committing to migrating all of popgetter to it. These are:

- [x] A pure python based task (example included in #28)
- [x] Something depending on the Geographic Data Science Docker image (See [this example](https://github.com/dabreegster/popgetter/blob/e709e895cc8733177983960f085b180e73d81560/popgetter/assets/us/__init__.py#L198-L211))
- [x] An escape hatch for wrapping some other third-party tasks (using esoteric dependencies). (Likely to be porting the existing england.py code to Dagster, using [Dagster Pipes](https://github.com/dagster-io/dagster/discussions/16319). (See #32).

# Decision

Once completed, we need to agree whether we are content that Dagster offers a good solution to the workflow management need we've identified (both in the HackMD above, and subsequently whilst attempting these three tasks above).

# Subsequent steps

If the choice of Dagster is confirmed, then there are a number of steps we know we will need to undertake. We can record them here for now. Converting them to individual issues and adding more detail can be done once confirmed.

- [ ] Identify examples of best practices (where they exist) for how to use dagster within popgetter (point to existing implementation within popgetter, rather than reinvent the documentation).
- [ ] Create issues for required use-cases where there is no known best practice.
- [ ] Migrate individual countries to Dagster (create a separate issue/PR for each country).
- [ ] Ensure group/prefixes/jobs etc are organised in a way to make useful subsets of the pipeline easily runnable from the commandline (See #20)
- [x] #38
- [ ] Others things...?



Meta Issue: Trialing Dagster
We have agreed to trial [Dagster](https://dagster.io/) to structure the workflow within popgetter. See [meeting notes here](https://hackmd.io/4-rDxn7KTmqIFgeMZcXcOQ)

This issue is to capture all of the different tasks involved in this.

# Exploration

Within that meeting, we committed to trying three use cases for Dagster before committing to migrating all of popgetter to it. These are:

- [x] A pure python based task (example included in #28)
- [x] Something depending on the Geographic Data Science Docker image (See [this example](https://github.com/dabreegster/popgetter/blob/e709e895cc8733177983960f085b180e73d81560/popgetter/assets/us/__init__.py#L198-L211))
- [x] An escape hatch for wrapping some other third-party tasks (using esoteric dependencies). (Likely to be porting the existing england.py code to Dagster, using [Dagster Pipes](https://github.com/dagster-io/dagster/discussions/16319). (See #32).

# Decision

Once completed, we need to agree whether we are content that Dagster offers a good solution to the workflow management need we've identified (both in the HackMD above, and subsequently whilst attempting these three tasks above).

# Subsequent steps

If the choice of Dagster is confirmed, then there are a number of steps we know we will need to undertake. We can record them here for now. Converting them to individual issues and adding more detail can be done once confirmed.

- [ ] Identify examples of best practices (where they exist) for how to use dagster within popgetter (point to existing implementation within popgetter, rather than reinvent the documentation).
- [ ] Create issues for required use-cases where there is no known best practice.
- [ ] Migrate individual countries to Dagster (create a separate issue/PR for each country).
- [ ] Ensure group/prefixes/jobs etc are organised in a way to make useful subsets of the pipeline easily runnable from the commandline (See #20)
- [x] #38
- [ ] Others things...?



Dagster Belgium



Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index ff8d904..aae2c19 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,3 +6,31 @@ __pycache__/
 .DS_Store
 .python-version
 .ztr-directory
+previous_code/us/demo_app/node_modules
+previous_code/us/node_modules
+persist/
+popgetter/cache/
+popgetter.egg-info/
+popgetter.egg-info/*
+popgetter/assets/uk_venv/
+node_modules/
+
+
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+wheels/
+share/python-wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
diff --git a/README.md b/README.md
index ff1195d..69848f4 100644
--- a/README.md
+++ b/README.md
@@ -1,83 +1,64 @@
 # popgetter
 
-This is a scratch-space to experiment with coercing census data from different
-places into a common format. See
-<https://dabreegster.github.io/talks/census_pitch/slides.html>
+Popgetter is a convenience tool for downloading census data from a number of different jurisdictions and coercing the data into common formats. The aim is that city or region scale analysis can be easily [replicated](https://the-turing-way.netlify.app/reproducible-research/overview/overview-definitions.html#table-of-definitions-for-reproducibility) for different geographies, using the most detailed, locally available data. 
 
-## Notes
+## What popgetter does and doesn't do
 
-- dadroit is the best known way to poke at big JSON files
+**Popgetter DOES:**
 
-## Requirements
+For each of the implemented countries:
 
-- *NIX-like environment (Linux, MacOS, WSL on Windows)
-- Python
-- mapshaper (See https://github.com/mbloch/mapshaper#installation)
-- wget (not standard on Windows)
+- Download the most detailed geometries, for which census data is available.
+- Download the most detailed census available for selected variables (currently focused on population and car ownership).
+- Ensures that the geometries and census data join correctly.
 
-### Optional dependency - ArcGIS API for Python
-To be able to download data from ArcGIS Online, you need to install ESRI's "ArcGIS API for Python".
-```
-pip install -r requirements-non-foss.txt
-```
-
-NOTE: Installation on Ubunutu 20.04 requires `libkrb5-dev` to be installed first.
-
-One of the indirect dependencies of the ArcGIS API for Python is `krb5-config`. The gssapi wheel needed this to build on Ubuntu 20.04 machine (apple/ccs-pykerberos#66). On Ubuntu, the package is `libkrb5-dev`, not `krb5-config`. [See here for details]]https://github.com/apple/ccs-pykerberos/issues/66).
-
-TODO: The ArcGIS API for Python  docs claim that it is possible to [install it with minimal dependencies](https://developers.arcgis.com/python/guide/anaconda#install-with-minimum-dependencies). However, this did not work exactly as stated in the docs. At some point, it might be worth looking at what the minimal dependencies are for our use case. (This will probably also solve the `krb5-config` issue above.)
-
-### Optional dependency - OGR
+  **Popgetter WILL**
 
-To be able to download data from WFS (Web Feature Service), you need [GDAL/OGR](https://gdal.org/download.html):
+  - present some standard metadata to allow the user to see which variables are available and any possible trade-off between geographic and demographic disaggregation.
+  - publish the data in a set of common file types (eg CloudGeoBuff, Parquet, PMtiles).
 
-- ogr2ogr
+**Popgetter DOES NOT:**
 
+- It does not attempt to ensure that census variables are comparable between different jurisdictions. Nor does it attempt to ensure that the results of any analysis can be directly compared across multiple countries. 
 
-##  Data (England and Wales)
+## Getting started
 
-### Geometries (Output Areas)
+At present, this is still a development project, so the first step is to clone the repo and then install using pip, with the `--editable` option:
 
-There are three different versions of the Output Areas (OAs) available from the ONS. By ad-hoc visual inspection, the Generalised Clipped EW (BGC) at least as good as the current data - but will review.
-
-Each of these versions has 188880 records. This is consistent with the census data (see below).
-
-- [Output Areas (Dec 2021) Boundaries Generalised Clipped EW (BGC)](https://geoportal.statistics.gov.uk/datasets/ons::output-areas-dec-2021-boundaries-generalised-clipped-ew-bgc)
-- [Output Areas (Dec 2021) Boundaries Full Clipped EW (BFC)](https://geoportal.statistics.gov.uk/datasets/ons::output-areas-dec-2021-boundaries-full-clipped-ew-bfc)
-- [Output Areas (2021) EW BFE (?Boundary Full Extent?)](https://geoportal.statistics.gov.uk/datasets/ons::output-areas-2021-ew-bfe/)
+```bash
+git clone git@github.com:Urban-Analytics-Technology-Platform/popgetter.git
+cd popgetter
+pip install -e ".[dev]"
+```
 
-### Census Information
+Then, start the Dagster UI web server:
 
-Numerous potential queries can be made to the census data. For now we are focused on car ownership.
+```bash
+dagster dev
+```
 
-The WebUI to access the car ownership census data is here:
-https://www.ons.gov.uk/datasets/TS045/editions/2021/versions/3/filter-outputs/a20437fb-ae7f-439b-bc91-de261335038b#get-data
-This need to be downloaded manually.
+Open http://localhost:3000 with your browser to see the project.
 
-The csv can be downloaded using wget from this URL (though it is unclear if this URL will remain valid)):
-CENSUS_URL = "https://static.ons.gov.uk/datasets/a20437fb-ae7f-439b-bc91-de261335038b/TS045-2021-3-filtered-2023-03-13T16:49:47Z.csv"
+You can start writing assets in `popgetter/assets/` directory. New assets and jobs will need to be added to the `popgetter/__init__.py` file.
 
-This has 944401 lines (including the header)
-944400 / 188880 = 5 categories per OA, which is what we expect.
+## Development
 
-### Census data from browser download
+You can start writing assets in `popgetter/assets/` directory. New assets and jobs will need to be added to the `popgetter/__init__.py` file.
 
-The WebUI to access the car ownership census data is here:
-https://www.ons.gov.uk/datasets/TS045/editions/2021/versions/3/filter-outputs/a20437fb-ae7f-439b-bc91-de261335038b#get-data
-This need to be downloaded manually.
+### Adding new Python dependencies
 
-The csv can be downloaded using wget from this URL (though it is unclear if this URL will remain valid)):
-CENSUS_URL = "https://static.ons.gov.uk/datasets/a20437fb-ae7f-439b-bc91-de261335038b/TS045-2021-3-filtered-2023-03-13T16:49:47Z.csv"
+You can specify new Python dependencies in `setup.py`.
 
-This has 944401 lines (including the header)
-944400 / 188880 = 5 categories per OA, which is what we expect.
+### Unit testing
 
-### Census data using the NOMIS API and UKCensusAPI
+Tests are in the `popgetter_tests` directory and you can run tests using `pytest`:
 
-TBC:
+```bash
+pytest popgetter_tests
+```
 
-> I tried generating the API link through https://www.nomisweb.co.uk, but got an internal error of some sort.
+### Repo structure
 
-I also tried this and got the same error message. However, in the [help](https://www.nomisweb.co.uk/api/v01/help), it states that there is a 25000 cell limit per request, which might be the issue we're hitting. It is possible to obtain an API key which increases the limit to 1 million cells. See https://github.com/virgesmith/UKCensusAPI#api-key
+This is a [Dagster](https://dagster.io/) project, and the repo layout was created with the [`dagster project scaffold`](https://docs.dagster.io/getting-started/create-new-project) command.
 
-1M limit would be enough for the whole of England, for five categories per OA, but would not be sufficient for more complex census queries. In these cases, we could loop through batches of OA codes and then merge the results. Might be useful if we want to the be able to get lots of different data from NOMIS. It's not clear if the UKCensusAPI package can do this. If not then it might be appropriate to make a PR to that package rather then adding it here.
+There is code, which predates the migration to Dagster in the `previous_code` directory. In due course, this will be removed as the remaining countries are migrated to Dagster. There are usage instructions for this old code in `previous_code/previous_code_usage.md`.
diff --git a/cli_usage.md b/cli_usage.md
new file mode 100644
index 0000000..671ed86
--- /dev/null
+++ b/cli_usage.md
@@ -0,0 +1,28 @@
+# popgetter CLI 
+
+For countries which have been ported to Dagster, the downloads can be invoked via the [Dagster CLI](https://docs.dagster.io/_apidocs/cli).
+
+### Run a single job
+
+Typically there is a single job per country. For Belgium, the job is called `job_be`:
+
+```bash
+DAGSTER_HOME=$PWD/persist dagster job execute -m popgetter --job job_be
+```
+
+### Run a single asset
+
+Within a country, there are likely to be multiple assets. To materialize a single asset (and any required dependencies). The command gets the number of cars per census sector in Belgium.
+
+```bash
+DAGSTER_HOME=$PWD/persist dagster asset materialize -m popgetter --select be/get_car_per_sector
+```
+(Typically we organise assets with the country code as a prefix, to ensure that asset names are unique).
+
+### Run everything
+
+(The quotes around the `*` are required to prevent it being interpreted by the shell.)
+
+```bash
+DAGSTER_HOME=$PWD/persist dagster asset materialize -m popgetter --select "*"
+```
diff --git a/dagster.yaml b/dagster.yaml
new file mode 100644
index 0000000..2f7bbee
--- /dev/null
+++ b/dagster.yaml
@@ -0,0 +1,3 @@
+run_coordinator:
+  module: dagster.core.run_coordinator
+  class: QueuedRunCoordinator
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..c5e8369
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,806 @@
+{
+  "name": "popgetter",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "mapshaper": "^0.6.47"
+      }
+    },
+    "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz",
+      "integrity": "sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz",
+      "integrity": "sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz",
+      "integrity": "sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA==",
+      "cpu": [
+        "arm"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz",
+      "integrity": "sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg==",
+      "cpu": [
+        "arm64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz",
+      "integrity": "sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz",
+      "integrity": "sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ==",
+      "cpu": [
+        "x64"
+      ],
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/@placemarkio/tokml": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/@placemarkio/tokml/-/tokml-0.3.3.tgz",
+      "integrity": "sha512-Y6lprxpPfDxLoUyeNcI/vfxMkeWlTjNFvh73zlxfQtZ8TWIj+rmPY99l5wNFVkHQOAwCzLaBXyxULpbtaMGyHQ=="
+    },
+    "node_modules/@tmcw/togeojson": {
+      "version": "5.8.1",
+      "resolved": "https://registry.npmjs.org/@tmcw/togeojson/-/togeojson-5.8.1.tgz",
+      "integrity": "sha512-2YNrbis3l5kS0XrYwiHEZcGwiRp0MJ5CvwGwtMWp2z2tsVlskeec2qgvKHnF0RCwI5GnjrrBOoKsWfndEnd3LA==",
+      "engines": {
+        "node": "*"
+      },
+      "peerDependencies": {
+        "@types/geojson": "*"
+      }
+    },
+    "node_modules/@types/concat-stream": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz",
+      "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/form-data": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz",
+      "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/geojson": {
+      "version": "7946.0.13",
+      "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz",
+      "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==",
+      "peer": true
+    },
+    "node_modules/@types/node": {
+      "version": "10.17.60",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
+      "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
+    },
+    "node_modules/@types/qs": {
+      "version": "6.9.10",
+      "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
+      "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw=="
+    },
+    "node_modules/@xmldom/xmldom": {
+      "version": "0.8.10",
+      "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+      "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/adm-zip": {
+      "version": "0.5.10",
+      "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz",
+      "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==",
+      "engines": {
+        "node": ">=6.0"
+      }
+    },
+    "node_modules/asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "node_modules/buffer-from": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+      "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz",
+      "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+      "dependencies": {
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.1",
+        "set-function-length": "^1.1.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz",
+      "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==",
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "engines": [
+        "node >= 0.8"
+      ],
+      "dependencies": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "node_modules/cookies": {
+      "version": "0.8.0",
+      "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
+      "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
+      "dependencies": {
+        "depd": "~2.0.0",
+        "keygrip": "~1.1.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+    },
+    "node_modules/d3-color": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+      "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/d3-interpolate": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+      "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+      "dependencies": {
+        "d3-color": "1 - 3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/d3-scale-chromatic": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
+      "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
+      "dependencies": {
+        "d3-color": "1 - 3",
+        "d3-interpolate": "1 - 3"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz",
+      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+      "dependencies": {
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/delaunator": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
+      "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
+      "dependencies": {
+        "robust-predicates": "^3.0.0"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/fflate": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.7.4.tgz",
+      "integrity": "sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw=="
+    },
+    "node_modules/flatbush": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/flatbush/-/flatbush-3.3.1.tgz",
+      "integrity": "sha512-oKuPbtT+DS2CxH+9Vhbsq8HifmSCuOw+3Cy5zt/vCIrZl5KyengoTHDBLmtpZoBhcwa7/biNjgL1DwdLMJYm1A==",
+      "dependencies": {
+        "flatqueue": "^1.2.1"
+      }
+    },
+    "node_modules/flatqueue": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/flatqueue/-/flatqueue-1.2.1.tgz",
+      "integrity": "sha512-X86TpWS1rGuY7m382HuA9vngLeDuWA9lJvhEG+GfgKMV5onSvx5a71cl7GMbXzhWtlN9dGfqOBrpfqeOtUfGYQ=="
+    },
+    "node_modules/form-data": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+      "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/geographiclib": {
+      "version": "1.48.0",
+      "resolved": "https://registry.npmjs.org/geographiclib/-/geographiclib-1.48.0.tgz",
+      "integrity": "sha512-WIpDKKj2Gu+E4jkF3f3fg7OPF6T1/35tQXKc4jLLQrwjNiTZ5KrrYF5Gp0dQ/YbJIoCjb9vs2/abWTRsCEoi2w==",
+      "deprecated": "This package has been split into geographic-geodesic + geographiclib-dms; use one or both of these instead of geographiclib."
+    },
+    "node_modules/geokdbush": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/geokdbush/-/geokdbush-1.1.0.tgz",
+      "integrity": "sha512-pyyrGCMXZwWJaGt1YZIgGQg5ol3JjvEKESTon10HxdfWXlaqh5An8fNJkwOYUE+VkQfCdvYQKPVezTQU9AqWAA==",
+      "dependencies": {
+        "tinyqueue": "^1.2.2"
+      }
+    },
+    "node_modules/geokdbush/node_modules/tinyqueue": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz",
+      "integrity": "sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA=="
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+      "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+      "dependencies": {
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/get-port": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz",
+      "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
+      "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==",
+      "dependencies": {
+        "get-intrinsic": "^1.2.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+      "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/http-basic": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-6.0.0.tgz",
+      "integrity": "sha512-7ScbVjuiReYe8S+OZOpNjoKGXrbhJHIrQQe7eq1TpLTJkxH8MPKvnTUzq/TNLjww1hdFQy8yUIC42wuLhCjYcQ==",
+      "dependencies": {
+        "@types/concat-stream": "^1.6.0",
+        "@types/node": "^7.0.31",
+        "caseless": "~0.12.0",
+        "concat-stream": "^1.4.6",
+        "http-response-object": "^3.0.1",
+        "parse-cache-control": "^1.0.1"
+      }
+    },
+    "node_modules/http-basic/node_modules/@types/node": {
+      "version": "7.10.14",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-7.10.14.tgz",
+      "integrity": "sha512-29GS75BE8asnTno3yB6ubOJOO0FboExEqNJy4bpz0GSmW/8wPTNL4h9h63c6s1uTrOopCmJYe/4yJLh5r92ZUA=="
+    },
+    "node_modules/http-response-object": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz",
+      "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==",
+      "dependencies": {
+        "@types/node": "^10.0.3"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/idb-keyval": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz",
+      "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg=="
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+    },
+    "node_modules/is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+      "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+    },
+    "node_modules/kdbush": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
+      "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew=="
+    },
+    "node_modules/keygrip": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
+      "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
+      "dependencies": {
+        "tsscmp": "1.0.6"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mapshaper": {
+      "version": "0.6.47",
+      "resolved": "https://registry.npmjs.org/mapshaper/-/mapshaper-0.6.47.tgz",
+      "integrity": "sha512-bdZZr9yheB8M8Q1OYFfuaC51g2gSUQ7H2ckBh98fsjSveY/TzqE0mG9DOudLjEynPdd+aNtWTScTKHo6dXDBbA==",
+      "dependencies": {
+        "@placemarkio/tokml": "^0.3.3",
+        "@tmcw/togeojson": "^5.6.0",
+        "@xmldom/xmldom": "^0.8.6",
+        "adm-zip": "^0.5.9",
+        "commander": "7.0.0",
+        "cookies": "^0.8.0",
+        "d3-color": "3.1.0",
+        "d3-interpolate": "^3.0.1",
+        "d3-scale-chromatic": "3.0.0",
+        "delaunator": "^5.0.0",
+        "fflate": "^0.7.4",
+        "flatbush": "^3.2.1",
+        "geokdbush": "^1.1.0",
+        "iconv-lite": "^0.6.3",
+        "idb-keyval": "^6.2.0",
+        "kdbush": "^3.0.0",
+        "mproj": "0.0.37",
+        "msgpackr": "^1.8.5",
+        "opn": "^5.3.0",
+        "rw": "~1.3.3",
+        "sync-request": "5.0.0",
+        "tinyqueue": "^2.0.3"
+      },
+      "bin": {
+        "mapshaper": "bin/mapshaper",
+        "mapshaper-gui": "bin/mapshaper-gui",
+        "mapshaper-xl": "bin/mapshaper-xl"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mproj": {
+      "version": "0.0.37",
+      "resolved": "https://registry.npmjs.org/mproj/-/mproj-0.0.37.tgz",
+      "integrity": "sha512-UtLQa2UyFQJuwqpLWd6TF3xYNE7nGTQWvwtXHBdpEAn8F/QHP1yTjqvo2CaQem9LcSQoiZLCHP1fRU4uCWzBVw==",
+      "dependencies": {
+        "geographiclib": "1.48.0",
+        "rw": "~1.3.2"
+      },
+      "bin": {
+        "mcs2cs": "bin/mcs2cs",
+        "mproj": "bin/mproj"
+      },
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/msgpackr": {
+      "version": "1.9.9",
+      "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.9.9.tgz",
+      "integrity": "sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A==",
+      "optionalDependencies": {
+        "msgpackr-extract": "^3.0.2"
+      }
+    },
+    "node_modules/msgpackr-extract": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz",
+      "integrity": "sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A==",
+      "hasInstallScript": true,
+      "optional": true,
+      "dependencies": {
+        "node-gyp-build-optional-packages": "5.0.7"
+      },
+      "bin": {
+        "download-msgpackr-prebuilds": "bin/download-prebuilds.js"
+      },
+      "optionalDependencies": {
+        "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.2",
+        "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.2",
+        "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.2",
+        "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.2",
+        "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.2",
+        "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.2"
+      }
+    },
+    "node_modules/node-gyp-build-optional-packages": {
+      "version": "5.0.7",
+      "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz",
+      "integrity": "sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==",
+      "optional": true,
+      "bin": {
+        "node-gyp-build-optional-packages": "bin.js",
+        "node-gyp-build-optional-packages-optional": "optional.js",
+        "node-gyp-build-optional-packages-test": "build-test.js"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+      "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/parse-cache-control": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz",
+      "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+    },
+    "node_modules/promise": {
+      "version": "8.3.0",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz",
+      "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==",
+      "dependencies": {
+        "asap": "~2.0.6"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.11.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
+      "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+      "dependencies": {
+        "side-channel": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/robust-predicates": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+      "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+    },
+    "node_modules/rw": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+      "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+    },
+    "node_modules/set-function-length": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz",
+      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+      "dependencies": {
+        "define-data-property": "^1.1.1",
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+      "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+      "dependencies": {
+        "call-bind": "^1.0.0",
+        "get-intrinsic": "^1.0.2",
+        "object-inspect": "^1.9.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/sync-request": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-5.0.0.tgz",
+      "integrity": "sha512-NKhEA4WacR3mRBIFz1niXrIUTrUVFtP2spzrLMINangebvJ/EFyVv+LMJKvVl6UIrJM4Fburnnj91lRnqb4WkA==",
+      "dependencies": {
+        "http-response-object": "^3.0.1",
+        "sync-rpc": "^1.2.0",
+        "then-request": "^5.0.0"
+      }
+    },
+    "node_modules/sync-rpc": {
+      "version": "1.3.6",
+      "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz",
+      "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==",
+      "dependencies": {
+        "get-port": "^3.1.0"
+      }
+    },
+    "node_modules/then-request": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/then-request/-/then-request-5.0.0.tgz",
+      "integrity": "sha512-A3uIVLD33SAvB10PfsxLuQBMV8GVC/6xKBMPOvkJchi6251e5AMJ+Yy+RVKsVsnj0iYNhN2E5SkNSi58H19wsw==",
+      "dependencies": {
+        "@types/concat-stream": "^1.6.0",
+        "@types/form-data": "0.0.33",
+        "@types/node": "^8.0.0",
+        "@types/qs": "^6.2.31",
+        "caseless": "~0.12.0",
+        "concat-stream": "^1.6.0",
+        "form-data": "^2.2.0",
+        "http-basic": "^6.0.0",
+        "http-response-object": "^3.0.1",
+        "promise": "^8.0.0",
+        "qs": "^6.4.0"
+      }
+    },
+    "node_modules/then-request/node_modules/@types/node": {
+      "version": "8.10.66",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
+      "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw=="
+    },
+    "node_modules/tinyqueue": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
+      "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA=="
+    },
+    "node_modules/tsscmp": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
+      "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
+      "engines": {
+        "node": ">=0.6.x"
+      }
+    },
+    "node_modules/typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..1dc670e
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+  "dependencies": {
+    "mapshaper": "^0.6.47"
+  }
+}
diff --git a/persist/.gitignore b/persist/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/popgetter/__init__.py b/popgetter/__init__.py
new file mode 100644
index 0000000..879012e
--- /dev/null
+++ b/popgetter/__init__.py
@@ -0,0 +1,42 @@
+from dagster import (
+    load_assets_from_package_module,
+    Definitions,
+    define_asset_job,
+    ScheduleDefinition,
+    AssetSelection,
+    PipesSubprocessClient
+)
+
+from popgetter import assets
+import os
+
+all_assets = [
+    *load_assets_from_package_module(assets.us, group_name="us"),
+    *load_assets_from_package_module(assets.be, group_name="be"),
+    *load_assets_from_package_module(assets.uk, group_name="uk"),
+]
+
+job_be = define_asset_job(
+    name="job_be",
+    selection=AssetSelection.groups("be"),
+    description="Downloads Belgian data.",
+)
+
+job_us = define_asset_job(
+    name="job_us",
+    selection=AssetSelection.groups("us"),
+    description="Downloads USA data.",
+)
+
+job_uk = define_asset_job(
+    name="job_uk",
+    selection=AssetSelection.groups("uk"),
+    description="Downloads UK data.",
+)
+
+defs = Definitions(
+    assets=all_assets,
+    schedules=[],
+    resources={"pipes_subprocess_client": PipesSubprocessClient()},
+    jobs=[job_be, job_us, job_uk],
+)
diff --git a/popgetter/assets/__init__.py b/popgetter/assets/__init__.py
new file mode 100644
index 0000000..950ee1a
--- /dev/null
+++ b/popgetter/assets/__init__.py
@@ -0,0 +1,1 @@
+from . import us, be, uk
diff --git a/popgetter/assets/be/__init__.py b/popgetter/assets/be/__init__.py
new file mode 100755
index 0000000..d63168a
--- /dev/null
+++ b/popgetter/assets/be/__init__.py
@@ -0,0 +1,630 @@
+#!/usr/bin/python3
+
+from collections import defaultdict
+from pathlib import Path
+import geopandas as gpd
+import pandas as pd
+import matplotlib.pyplot as plt
+from popgetter.utils import get_path_to_cache, download_zipped_files, markdown_from_plot
+
+from dagster import asset, AssetIn, AssetExecutionContext, MetadataValue
+
+
+WORKING_DIR = Path("belgium")
+asset_prefix = "be"
+
+
+@asset(key_prefix="be2", name="non_unique_name")
+def non_unique_name():
+    return "asset_prefix"
+
+# Use of `key_prefix` taken from
+# https://github.com/dagster-io/dagster/discussions/15292
+@asset(name="non_2_unique_name", key_prefix="be2",
+       ins={
+           "non_unique_name": AssetIn(key_prefix="be2")
+       })
+def non_unique_name_2(non_unique_name):
+    return f"country name is: {non_unique_name}, and '__file__' is '{__file__}'"
+
+
+@asset(key_prefix=asset_prefix)
+def get_geometries(context: AssetExecutionContext) -> gpd.GeoDataFrame:
+    """
+    Downloads the Statistical Sector for Belgium and returns a GeoDataFrame.
+
+    If the data has already been downloaded, it is not downloaded again and
+    the cached version is used to create the GeoDataFrame.
+    """
+    output_dir =  WORKING_DIR / "statistical_sectors"
+
+    # Administrative boundaries - aka "Statistical sectors 2023 (Areas)"
+    # 
+    # User WebUI:
+    # "https://statbel.fgov.be/en/open-data/statistical-sectors-2023"
+
+    # URL of datafile
+    statistical_sectors = "https://statbel.fgov.be/sites/default/files/files/opendata/Statistische%20sectoren/sh_statbel_statistical_sectors_3812_20230101.geojson.zip"
+    
+    # Column Descriptions from https://statbel.fgov.be/sites/default/files/files/opendata/Statistische%20sectoren/Columns%20description_0.xlsx
+
+    # | Naam/Nom             | Description                                                                           |
+    # | -------------------- | ------------------------------------------------------------------------------------- |
+    # | cd_sector            | Statistical sector code on 01/01/2018                                                 |
+    # | tx_sector_descr_nl   | Name of the statistical sector, Dutch version                                         |
+    # | tx_sector_descr_fr   | Name of the statistical sector, French version                                        |
+    # | tx_sector_descr_de   | Name of the statistical sector, German version                                        |
+    # | cd_sub_munty         | Aggregation of statistical sectors that have the same first 6 positions in their code |
+    # | tx_sub_munty_nl      | NIS6 name, Dutch version                                                              |
+    # | tx_sub_munty_fr      | NIS6 name, French version                                                             |
+    # | cd_munty_refnis      | NIS code of the municipality on 01/01/2018 as text                                    |
+    # | tx_munty_descr_nl    | Name of the municipality, Dutch version                                               |
+    # | tx_munty_descr_fr    | Name of the municipality, French version                                              |
+    # | tx_munty_descr_de    | Name of the municipality, German version                                              |
+    # | cd_dstr_refnis       | NIS Code of the district                                                              |
+    # | tx_adm_dstr_descr_nl | Name of the district, Dutch version                                                   |
+    # | tx_adm_dstr_descr_fr | Name of the district, French version                                                  |
+    # | tx_adm_dstr_descr_de | Name of the district, German version                                                  |
+    # | cd_prov_refnis       | NIS Code of the province                                                              |
+    # | tx_prov_descr_nl     | Name of the province, Dutch version                                                   |
+    # | tx_prov_descr_fr     | Name of the province, French version                                                  |
+    # | tx_prov_descr_de     | Name of the province, German version                                                  |
+    # | cd_rgn_refnis        | NIS Code of the region                                                                |
+    # | tx_rgn_descr_nl      | Name of the region, Dutch version                                                     |
+    # | tx_rgn_descr_fr      | Name of the region, French version                                                    |
+    # | tx_rgn_descr_de      | Name of the region, German version                                                    |
+    # | cd_country           | Code of the country                                                                   |
+    # | cd_nuts1             | NUTS1 code, version 2016 used by Eurostat                                             |
+    # | cd_nuts2             | NUTS2 code, version 2016 used by Eurostat                                             |
+    # | cd_nuts3             | NUTS3 code, version 2016 used by Eurostat                                             |
+    # | ms_area_ha           | Area of the statistical sector in hectares calculated in RS Lambert 2008)             |
+    # | ms_perimeter_m       | Perimeter of the statistical sector in meters calculated in RS Lambert 2008)          |
+
+    try:
+        download_zipped_files(statistical_sectors, output_dir)
+    except ValueError:
+        print("Skipping download of statistical sectors")
+
+    geojson_path = output_dir / "sh_statbel_statistical_sectors_3812_20230101.geojson" / "sh_statbel_statistical_sectors_3812_20230101.geojson"
+
+    sectors_gdf = gpd.read_file(geojson_path)
+    sectors_gdf.index = sectors_gdf.index.astype(str)
+
+    # Plot and convert the image to Markdown to preview it within Dagster
+    # Yes we do pass the `plt` object to the markdown_from_plot function and not the `ax` object
+    ax = sectors_gdf.plot(color="green")
+    ax.set_title("Sectors in Belgium")
+    md_plot = markdown_from_plot(plt)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(sectors_gdf),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  sectors_gdf.columns.to_list()])),
+            "preview": MetadataValue.md(
+                sectors_gdf.loc[:, sectors_gdf.columns != "geometry"].head().to_markdown()
+            ),
+            "plot": MetadataValue.md(md_plot)
+        }
+    ) 
+
+    return sectors_gdf
+
+
+@asset(
+    key_prefix=asset_prefix,
+    ins={
+        "get_geometries":AssetIn(key_prefix=asset_prefix),
+    }
+)
+def aggregate_sectors_to_municipalities(context: AssetExecutionContext, get_geometries):
+    """
+    Aggregates a GeoDataFrame of the Statistical Sectors to Municipalities.
+
+    The `sectors_gdf` is assumed to be produced by `get_geometries()`.
+    
+    Also saves the result to a GeoPackage file in the output_dir
+    returns a GeoDataFrame of the Municipalities.
+    """
+    output_dir =  WORKING_DIR / "statistical_sectors"
+    munty_gdf = get_geometries.dissolve(by="cd_munty_refnis")
+    munty_gdf.to_file(output_dir / "municipalities.gpkg", driver="GPKG")
+    munty_gdf.index = munty_gdf.index.astype(str)
+
+    # Plot and convert the image to Markdown to preview it within Dagster
+    # Yes we do pass the `plt` object to the markdown_from_plot function and not the `ax` object
+    ax = munty_gdf.plot(color="green")
+    ax.set_title("Municipalities in Belgium")
+    md_plot = markdown_from_plot(plt)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(munty_gdf),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  munty_gdf.columns.to_list()])),
+            "preview": MetadataValue.md(
+                munty_gdf.loc[:, munty_gdf.columns != "geometry"].head().to_markdown()
+            ),
+            "plot": MetadataValue.md(md_plot)
+        }
+    ) 
+
+    return munty_gdf
+
+@asset(
+    key_prefix=asset_prefix
+)
+def get_population_details_per_municipality(context: AssetExecutionContext):
+    """
+    Downloads the population breakdown data per Municipality Sector and returns a DataFrame.
+    
+    If the data has already been downloaded, it is not downloaded again and the 
+    DataFrame is loaded from the cache.
+
+    returns a DataFrame with one row per, with the number of people statisfying a
+    unique combination of age, sex, civic (marital) status, per municipality.
+    """
+    output_dir = Path("population") / "demographic_breakdown"
+
+    # Population
+    # "Population by place of residence, nationality, marital status, age and sex"
+    # https://statbel.fgov.be/en/open-data/population-place-residence-nationality-marital-status-age-and-sex-13
+
+    # Data (excel)
+    # "https://statbel.fgov.be/sites/default/files/files/opendata/bevolking%20naar%20woonplaats%2C%20nationaliteit%20burgelijke%20staat%20%2C%20leeftijd%20en%20geslacht/TF_SOC_POP_STRUCT_2023.xlsx"
+    # Data (zipped txt)
+    pop_data_url = "https://statbel.fgov.be/sites/default/files/files/opendata/bevolking%20naar%20woonplaats%2C%20nationaliteit%20burgelijke%20staat%20%2C%20leeftijd%20en%20geslacht/TF_SOC_POP_STRUCT_2023.zip"
+
+    zip_file_contents = "TF_SOC_POP_STRUCT_2023.txt"
+
+    url = f"zip://{zip_file_contents}::{pop_data_url}"
+
+    text_file = get_path_to_cache(url, output_dir, "rt")
+
+    with text_file.open() as f:
+        df = pd.read_csv(f, sep="|", encoding="utf-8-sig")
+
+    df.index = df.index.astype(str)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(df),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  df.columns.to_list()])),
+            "preview": MetadataValue.md(
+                df.head().to_markdown()
+            )
+        }
+    ) 
+
+
+    return df
+
+
+@asset(
+    key_prefix=asset_prefix
+)
+def get_population_by_statistical_sector(context: AssetExecutionContext):
+    """
+    Downloads the population data per Statistical Sector and returns a DataFrame.
+
+    If the data has already been downloaded, it is not downloaded again and the
+    DataFrame is loaded from the cache.
+
+    returns a DataFrame with one row per Statistical Sector, with the total number
+    of people per sector.
+    """
+    output_dir =  Path("population") / "per_sector"
+
+    # Population
+    # Population by Statistical sector 
+    # https://statbel.fgov.be/en/open-data/population-statistical-sector-10
+
+    pop_data_url = "https://statbel.fgov.be/sites/default/files/files/opendata/bevolking/sectoren/OPENDATA_SECTOREN_2022.zip"
+
+    # The column descriptions from https://statbel.fgov.be/sites/default/files/files/opendata/bevolking/sectoren/Columns%20description2020.xlsx
+    # are incorrect and do not match the data. The correct column descriptions are taken from the data file itself.
+
+    # | Naam/Nom            |
+    # | ------------------- | 
+    # | CD_REFNIS           |
+    # | CD_SECTOR           |
+    # | TOTAL               |
+    # | DT_STRT_SECTOR      |
+    # | DT_STOP_SECTOR      |
+    # | OPPERVLAKKTE IN HM² |
+    # | TX_DESCR_SECTOR_NL  |
+    # | TX_DESCR_SECTOR_FR  |
+    # | TX_DESCR_NL         |
+    # | TX_DESCR_FR         |
+
+    zip_file_contents = "OPENDATA_SECTOREN_2022.txt"
+    url = f"zip://{zip_file_contents}::{pop_data_url}"
+
+    text_file = get_path_to_cache(url, output_dir, "rt")
+
+    with text_file.open() as f:
+        df = pd.read_csv(f, sep="|", encoding="utf-8-sig")
+
+    df.index = df.index.astype(str)
+    df["CD_REFNIS"] = df["CD_REFNIS"].astype(str)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(df),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  df.columns.to_list()])),
+            "preview": MetadataValue.md(
+                df.head().to_markdown()
+            )
+        }
+    ) 
+
+    return df
+
+
+def aggregate_population_details_per_municipalities(df, output_dir):
+    """
+    Aggregates a DataFrame of the population details per Statistical Sector to Municipalities.
+
+    The `df` is assumed to be produced by `get_population_details_per_municipality()`.
+
+    Also saves the result to a CSV file in the output_dir
+
+    returns a DataFrame with one row per Municipality, with the total number of people
+
+    TODO: Explore the other ways of aggregating this data.
+    """
+    # Columns detail take from https://statbel.fgov.be/sites/default/files/files/opendata/bevolking%20naar%20woonplaats%2C%20nationaliteit%20burgelijke%20staat%20%2C%20leeftijd%20en%20geslacht/Columns%20description.xlsx
+
+    # | Naam/Nom             | Description                     |
+    # | -------------------- | ------------------------------- |
+    # | CD_MUNTY_REFNIS      | Refnis code of the municipality |
+    # | TX_MUNTY_DESCR_NL    | Municipality name in Dutch      |
+    # | TX_MUNTY_DESCR_FR    | Municipality name in French     |
+    # | CD_DSTR_REFNIS       | Refnis code of the district     |
+    # | TX_ADM_DSTR_DESCR_NL | District name in Dutch          |
+    # | TX_ADM_DSTR_DESCR_FR | District name in French         |
+    # | CD_PROV_REFNIS       | Refnis code of the province     |
+    # | TX_PROV_DESCR_NL     | Province name in Dutch          |
+    # | TX_PROV_DESCR_FR     | Province name in French         |
+    # | CD_RGN_REFNIS        | Refnis code of the region       |
+    # | TX_RGN_DESCR_NL      | Region name in Dutch            |
+    # | TX_RGN_DESCR_FR      | Region name in French           |
+    # | CD_SEX               | Gender                          |
+    # | CD_NATLTY            | Nationality code                |
+    # | TX_NATLTY_FR         | Nationality in French           |
+    # | TX_NATLTY_NL         | Nationality in Dutch            |
+    # | CD_CIV_STS           | Civil status code               |
+    # | TX_CIV_STS_FR        | Civil status in French          |
+    # | TX_CIV_STS_NL        | Civil status in Dutch           |
+    # | CD_AGE               | Age                             |
+    # | MS_POPULATION        | Number of individuals           |
+    # | CD_YEAR              | Reference year                  |
+
+    # Drop all the columns we don't need
+
+    # TODO there are many different ways top aggregate this data. For now we just take the sum of the population for each municipality
+    df = df[["CD_REFNIS", "MS_POPULATION"]]
+
+    munty_df = df.groupby(by="CD_REFNIS").sum()
+    munty_df.to_csv(output_dir / "municipalities.csv", sep="|")
+    munty_df.index = munty_df.index.astype(str)
+
+    return munty_df
+
+@asset(
+    key_prefix=asset_prefix,
+)
+def get_car_per_sector(context: AssetExecutionContext):
+    """
+    Downloads the number of cars per Statistical Sector and returns a DataFrame.
+
+    If the data has already been downloaded, it is not downloaded again and the
+    DataFrame is loaded from the cache.
+
+    returns a DataFrame with one row per Statistical Sector, with the total number
+    of cars per sector.
+    """
+    output_dir =  Path("car_ownership")
+
+    # Number of cars by Statistical sector 
+    # https://statbel.fgov.be/en/open-data/number-cars-statistical-sector
+    cars_url = "https://statbel.fgov.be/sites/default/files/files/opendata/Aantal%20wagens%20per%20statistische%20sector/TF_CAR_HH_SECTOR.zip"
+
+    # Column names (infered as the website links for the wrong column descriptions)
+    
+    # | Column Name       |
+    # | ----------------- |
+    # | CD_YEAR           |
+    # | CD_REFNIS         |
+    # | TX_MUNTY_DESCR_FR |
+    # | TX_MUNTY_DESCR_NL |
+    # | TX_MUNTY_DESCR_DE |
+    # | TX_MUNTY_DESCR_EN |
+    # | cd_sector         |
+    # | total_huisH       |
+    # | total_wagens      |
+
+    zip_file_contents = "TF_CAR_HH_SECTOR.txt"
+    url = f"zip://{zip_file_contents}::{cars_url}"
+
+    text_file = get_path_to_cache(url, output_dir, "rt")
+
+    with text_file.open() as f:
+        df = pd.read_csv(f, sep="|", encoding="utf-8-sig")
+
+    df.index = df.index.astype(str)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(df),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  df.columns.to_list()])),
+            "preview": MetadataValue.md(
+                df.head().to_markdown()
+            )
+        }
+    ) 
+
+    return df
+
+@asset(
+    key_prefix=asset_prefix,
+)
+def get_car_ownership_by_housetype(context: AssetExecutionContext):
+    """
+    Downloads the number of cars per household type by municipality and returns a DataFrame.
+
+    If the data has already been downloaded, it is not downloaded again and the
+    DataFrame is loaded from the cache.
+
+    returns a DataFrame with one row per Municipality, with the total number
+    of cars per household type.
+    """
+    output_dir = Path("car_ownership")
+
+    # Number of cars per household type by municipality 
+    # https://statbel.fgov.be/en/open-data/number-cars-household-type-municipality
+    car_per_household_url = "https://statbel.fgov.be/sites/default/files/files/opendata/Aantal%20wagens%20volgens%20huishoudtype%20per%20gemeente/TF_CAR_HHTYPE_MUNTY.zip"
+
+    # Column Description from https://statbel.fgov.be/sites/default/files/files/opendata/Aantal%20wagens%20volgens%20huishoudtype%20per%20gemeente/Columns%20description_TF_CAR_HHTYPE_MUNTY.xlsx
+
+    # | Omschrijving                | Description                     |
+    # | --------------------------- | ------------------------------- |
+    # | Referentie jaar             | Reference year                  |
+    # | Refnis-code van de gemeente | Refnis code of the municipality |
+    # | Naam van de gemeente in FR  | Name of the municipality in FR  |
+    # | Naam van de gemeente in NL  | Name of the municipality in NL  |
+    # | Huishoud type               | Household type                  |
+    # | Aantal huishoudens          | Numbre of households            |
+    # | Aantal wagens               | Number of cars                  |
+
+    # where "Household type" is one of:
+
+    # | Detail                                   |
+    # | ---------------------------------------- |
+    # | 1\. People living alone                  |
+    # | 2\. Married couples with no children     |
+    # | 3\. Married couples with children        |
+    # | 4\. Not-married couples with no children |
+    # | 5\. Non-married couples with children    |
+    # | 6\. Single parents                       |
+    # | 7\. Other types of household             |
+    # | 8\. Collective households                |
+
+    zip_file_contents = "TF_CAR_HHTYPE_MUNTY.txt"
+    url = f"zip://{zip_file_contents}::{car_per_household_url}"
+
+    text_file = get_path_to_cache(url, output_dir, "rt")
+
+    with text_file.open() as f:
+        df = pd.read_csv(f, sep="|", encoding="utf-8-sig")
+
+    df.index = df.index.astype(str)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(df),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  df.columns.to_list()])),
+            "preview": MetadataValue.md(
+                df.head().to_markdown()
+            )
+        }
+    ) 
+
+    return df
+
+
+@asset(
+    key_prefix=asset_prefix,
+    ins={
+        "get_geometries":AssetIn(key_prefix=asset_prefix),
+        "get_population_by_statistical_sector":AssetIn(key_prefix=asset_prefix),
+    }
+)
+def sector_populations(context: AssetExecutionContext, get_geometries, get_population_by_statistical_sector):
+    """
+    Returns a GeoDataFrame of the Statistical Sectors joined with the population per sector.
+    """
+    # Population
+    pop_gdf = get_geometries.merge(get_population_by_statistical_sector, right_on="CD_REFNIS", left_on="cd_munty_refnis", how="inner")
+
+    # Plot and convert the image to Markdown to preview it within Dagster
+    # Yes we do pass the `plt` object to the markdown_from_plot function and not the `ax` object
+    ax = pop_gdf.plot(column="TOTAL", legend=True, scheme="quantiles")
+    ax.set_title("Populations per sector in Belgium")
+    md_plot = markdown_from_plot(plt)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(pop_gdf),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  pop_gdf.columns.to_list()])),
+            "preview": MetadataValue.md(
+                pop_gdf.loc[:, pop_gdf.columns != "geometry"].head().to_markdown()
+            ),
+            "plot": MetadataValue.md(md_plot)
+        }
+    ) 
+
+    return pop_gdf
+
+
+@asset(
+    key_prefix=asset_prefix,
+    ins={
+        "get_geometries":AssetIn(key_prefix=asset_prefix),
+        "get_car_per_sector":AssetIn(key_prefix=asset_prefix),
+    }
+)
+def sector_car_ownership(context: AssetExecutionContext, get_geometries, get_car_per_sector):
+    """
+    Returns a GeoDataFrame of the Statistical Sectors joined with the number of cars per sector.
+    """
+    # Vehicle Ownership
+    cars = get_car_per_sector
+    cars["CD_REFNIS"] = cars["CD_REFNIS"].astype(str)
+    cars_gdf = get_geometries.merge(cars, right_on="CD_REFNIS", left_on="cd_munty_refnis", how="inner")
+
+    # Plot and convert the image to Markdown to preview it within Dagster
+    # Yes we do pass the `plt` object to the markdown_from_plot function and not the `ax` object
+    ax = cars_gdf.plot(column="total_wagens", legend=True, scheme="quantiles")
+    ax.set_title("Car ownership per sector in Belgium")
+    md_plot = markdown_from_plot(plt)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(cars_gdf),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  cars_gdf.columns.to_list()])),
+            "preview": MetadataValue.md(
+                cars_gdf.loc[:, cars_gdf.columns != "geometry"].head().to_markdown()
+            ),
+            "plot": MetadataValue.md(md_plot)
+        }
+    ) 
+
+    return cars_gdf
+
+
+@asset(
+    key_prefix=asset_prefix,
+    ins={
+        "get_population_details_per_municipality": AssetIn(key_prefix=asset_prefix),
+    }
+)
+def pivot_population(context: AssetExecutionContext, get_population_details_per_municipality: pd.DataFrame):
+    # For brevity
+    pop = get_population_details_per_municipality
+
+    # Drop all the columns we don't need
+    pop = pop[[
+        "CD_REFNIS",          # keep
+        # "CD_DSTR_REFNIS",   # drop 
+        # "CD_PROV_REFNIS",   # drop
+        # "CD_RGN_REFNIS",    # drop
+        "CD_SEX",             # keep
+        # "CD_NATLTY",        # drop
+        # "CD_CIV_STS",       # drop
+        "CD_AGE",             # keep
+        "MS_POPULATION",      # keep
+        # "CD_YEAR",          # drop
+    ]]
+
+    table = None
+
+    # Using HXL tags for variable names (https://hxlstandard.org/standard/1-1final/dictionary/#tag_population)
+    columns = {
+        "population_children_age5_17" : (pop["CD_AGE"] >= 5) & (pop["CD_AGE"] < 18),
+        "population_infants_age0_4" : (pop["CD_AGE"] <= 4),
+        "population_children_age0_17" : (pop["CD_AGE"] >= 0) & (pop["CD_AGE"] < 18),
+        "population_adults_f" : (pop["CD_AGE"] > 18) & (pop["CD_SEX"] == 'F'),
+        "population_adults_m" : (pop["CD_AGE"] > 18) & (pop["CD_SEX"] == 'M'),
+        "population_adults" : (pop["CD_AGE"] > 18),
+        "population_ind" : (pop["CD_AGE"] >= 0),
+    }
+
+    for col_name, filter in columns.items():
+        temp_table = pop.loc[filter].groupby(
+            by=["CD_REFNIS"],
+            as_index=True
+        ).agg(**{
+            col_name : pd.NamedAgg(column="MS_POPULATION", aggfunc="sum"),
+        })
+
+        if table is None:
+            table = temp_table
+        else:
+            table = table.merge(temp_table, left_index=True, right_index=True, how="inner")
+
+    # table.set_index("CD_REFNIS", inplace=True, drop=False)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(table),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  table.columns.to_list()])),
+            "preview": MetadataValue.md(
+                table.head().to_markdown()
+            ),
+        }
+    )
+
+    return table
+
+
+@asset(
+    key_prefix=asset_prefix,
+    ins={
+        "aggregate_sectors_to_municipalities": AssetIn(key_prefix=asset_prefix),
+        "pivot_population": AssetIn(key_prefix=asset_prefix),
+    }
+)
+def municipalities_populations(context: AssetExecutionContext, aggregate_sectors_to_municipalities, pivot_population):
+    """
+    Returns a GeoDataFrame of the Municipalities joined with the population per municipality.
+    """
+    # Population
+    population = pivot_population
+    population.index = population.index.astype(str)
+
+    geom = aggregate_sectors_to_municipalities
+    pop_gdf = geom.merge(population, right_on="CD_REFNIS", left_on="cd_munty_refnis", how="inner")
+
+    ax = pop_gdf.plot(column="population_ind", legend=True, scheme="quantiles")
+    ax.set_title("Population per Municipality in Belgium")
+    md_plot = markdown_from_plot(plt)
+
+    context.add_output_metadata(
+        metadata={
+            "num_records": len(pop_gdf),  # Metadata can be any key-value pair
+            "columns": MetadataValue.md("\n".join([f"- '`{col}`'" for col in  pop_gdf.columns.to_list()])),
+            "preview": MetadataValue.md(
+                pop_gdf.loc[:, pop_gdf.columns != "geometry"].head().to_markdown()
+            ),
+            "plot": MetadataValue.md(md_plot)
+        }
+    ) 
+
+
+    return pop_gdf
+
+
+if __name__ == "__main__":
+    WORKING_DIR = Path(__file__).parent / "data" / "belgium"
+
+    # # Get the geometries
+    stat_sectors = get_geometries()
+    print(stat_sectors.head())
+    # stat_sectors.index = stat_sectors.index.astype(str)
+
+    # # Population
+    # print("get_population_details_per_municipality().head()")
+    # print(get_population_details_per_municipality().head())
+    # print("get_population_by_statistical_sector().head()")
+    # print(get_population_by_statistical_sector().head())
+
+    # # # Vehicle Ownership
+    # print("get_car_per_sector().head()")
+    # print(get_car_per_sector().head())
+    # print("get_car_ownership_by_housetype().head()")
+    # print(get_car_ownership_by_housetype().head())
+
+    # # Demo plot - slow to render, so only uncomment if required
+    ax = stat_sectors.plot(column="TOTAL", legend=True, scheme="quantiles")
+    ax.set_title("Population per sector")
+    plt.show()
+
diff --git a/popgetter/assets/uk/__init__.py b/popgetter/assets/uk/__init__.py
new file mode 100644
index 0000000..c300a5b
--- /dev/null
+++ b/popgetter/assets/uk/__init__.py
@@ -0,0 +1,94 @@
+import shutil
+import popgetter
+from pathlib import Path
+import os
+
+from dagster import (
+    AssetExecutionContext,
+    MaterializeResult,
+    PipesSubprocessClient,
+    asset,
+    file_relative_path,
+)
+
+
+uk_venv_path = str((Path(__file__).parent.parent / "uk_venv").absolute())
+
+@asset(key_prefix="uk", name="create_custom_venv")
+def create_custom_venv(
+    context: AssetExecutionContext,
+    pipes_subprocess_client: PipesSubprocessClient,
+) -> MaterializeResult:
+    context.log.info(f"Creating custom venv for UK at {uk_venv_path}")
+    context.add_output_metadata(
+        metadata={
+            "uk_venv_path": uk_venv_path,
+            "python_version": shutil.which("python"),
+        }
+    )
+    cmd = [shutil.which("python"), "-m", "venv", uk_venv_path]
+
+    pcci = pipes_subprocess_client.run(
+        command=cmd, context=context
+    )
+    context.log.debug(f"pcci: {pcci}")
+    context.log.debug(f"dir(pcci): {dir(pcci)}")
+    # return pcci.get_results()
+
+    py_exe = str(Path(uk_venv_path) / "bin" / "python")
+    context.log.info(f"Installing custom dependencies for UK at {uk_venv_path}")
+    context.add_output_metadata(
+        metadata={
+            "py_exe": py_exe,
+            "python_version": shutil.which("python"),
+        }
+    )
+    cmd = [py_exe, "-m", "pip", "install", "-r", file_relative_path(__file__, "requirements-non-foss-uk.txt")] 
+    pcci = pipes_subprocess_client.run(
+        command=cmd, context=context
+    )
+    context.log.debug(f"pcci: {pcci}")
+    context.log.debug(f"dir(pcci): {dir(pcci)}")
+    return pcci.get_results()
+
+
+
+@asset(key_prefix="uk", name="install_mapshaper")
+def install_mapshaper(
+    context: AssetExecutionContext,
+    pipes_subprocess_client: PipesSubprocessClient,
+) -> MaterializeResult:
+    """
+    Assumption: `npm` is installed and on the path.
+    """
+    context.log.info(f"Installing Mapshaper")
+
+    cmd = [shutil.which("npm"), "install", "mapshaper"]
+    context.log.info(f"cmd: {cmd}")
+
+    pcci = pipes_subprocess_client.run(
+        command=cmd, context=context, env={"PATH": os.environ["PATH"]}
+    )
+
+    context.log.debug(f"pcci: {pcci}")
+    context.log.debug(f"dir(pcci): {dir(pcci)}")
+    result = pcci.get_results()
+    context.log.debug(f"result: {result}")
+    context.log.debug(f"dir(result): {dir(result)}")
+    return result
+
+
+@asset(
+    key_prefix="uk",
+    name="legacy_asset",
+    deps=[create_custom_venv, install_mapshaper],
+)
+def legacy_asset(
+    context: AssetExecutionContext, pipes_subprocess_client: PipesSubprocessClient
+) -> MaterializeResult:
+    py_exe = str(Path(uk_venv_path) / "bin" / "python")
+    cmd = [py_exe, file_relative_path(__file__, "legacy/england.py")]
+    return pipes_subprocess_client.run(
+        command=cmd, context=context, env={"PATH": os.environ["PATH"]}
+    ).get_results()
+
diff --git a/downloader.py b/popgetter/assets/uk/legacy/downloader.py
similarity index 100%
rename from downloader.py
rename to popgetter/assets/uk/legacy/downloader.py
diff --git a/england.py b/popgetter/assets/uk/legacy/england.py
similarity index 82%
rename from england.py
rename to popgetter/assets/uk/legacy/england.py
index 4ad017c..301f0c6 100755
--- a/england.py
+++ b/popgetter/assets/uk/legacy/england.py
@@ -7,6 +7,12 @@
 import subprocess
 from downloader import download_from_arcgis_online
 
+import pandas as pd
+# import geopandas as gpd
+from dagster_pipes import PipesContext, PipesMetadataValue, open_dagster_pipes
+
+open_dagster_pipes()
+
 
 def convert_geo_to_topo_json(geojson_file, topojson_file, new_layer_name, working_dir):
     """
@@ -67,7 +73,6 @@ def join_vehicle_ownership(output_areas_topojson_path, census_path, output_path)
 if __name__ == "__main__":
     WORKING_DIR = "data"
 
-    # Output Areas
 
     # Ideally we would use the Output Areas as served by the ONS:
     # OUTPUT_AREAS_URL = "https://services1.arcgis.com/ESMARspQHYMw9BZ9/arcgis/rest/services/Output_Areas_Dec_2021_Boundaries_Generalised_Clipped_EW_BGC_2022/FeatureServer/"
@@ -95,3 +100,18 @@ def join_vehicle_ownership(output_areas_topojson_path, census_path, output_path)
 
     download_vehicle_ownership(CENSUS_URL, WORKING_DIR)
     join_vehicle_ownership(output_areas_topojson_path, census_path, combined_output_path)
+
+    # Report back to Dagster (if running in Dagster)
+    context = PipesContext.get()
+    assert context.asset_key # things like asset key are passed automatically and available in context
+    # context.report_asset_materialization(metadata={"nrows": nrows}) # nrows was defined somewhere in the script
+
+    census_df = pd.read_csv(census_path)
+
+    context.report_asset_materialization(
+        metadata={
+            "census_num_records": len(census_df),  # Metadata can be any key-value pair
+            "census_columns": PipesMetadataValue(type="md", raw_value="\n".join([f"- '`{col}`'" for col in  census_df.columns.to_list()])),
+            "census_preview": PipesMetadataValue(type="md", raw_value=census_df.head().to_csv()),
+        }
+    ) 
diff --git a/popgetter/assets/uk/requirements-non-foss-uk.txt b/popgetter/assets/uk/requirements-non-foss-uk.txt
new file mode 100644
index 0000000..d2e9af7
--- /dev/null
+++ b/popgetter/assets/uk/requirements-non-foss-uk.txt
@@ -0,0 +1,2 @@
+arcgis~=2.0.0
+dagster-pipes
diff --git a/popgetter/assets/us/__init__.py b/popgetter/assets/us/__init__.py
new file mode 100644
index 0000000..4cd4c11
--- /dev/null
+++ b/popgetter/assets/us/__init__.py
@@ -0,0 +1,211 @@
+from dagster import (asset,multi_asset, DynamicPartitionsDefinition, AssetOut, DailyPartitionsDefinition) 
+
+import pandas as pd 
+import geopandas as gp
+from .config import ACS_METADATA,SUMMARY_LEVELS
+import tempfile
+import os
+import docker
+import urllib
+from pathlib import Path
+
+year = 2019
+summary_level = "fiveYear"
+
+@asset(key_prefix="us2", name="non_unique_name")
+def non_unique_name():
+    return "USA"
+
+# @asset(key_prefix="us", name="non_unique_name_2")
+# def non_unique_name_2(unique_name):
+#     return f"country name is: '{unique_name}'"
+
+raw_table_files_partition = DynamicPartitionsDefinition(name="raw_table_files")
+
+geo_dir  = tempfile.mkdtemp()
+#
+# tractDir = os.path.join(workdir,"tracts")
+# blockGroupDir = os.path.join(workdir,"block_groups")
+# countyDir = os.path.join(workdir,"counties")
+#
+# os.mkdir(blockGroupDir)
+# os.mkdir(tractDir)
+# os.mkdir(countyDir)
+
+def get_summary_table(table_name: str, year:int, summary_level:str):
+    base = ACS_METADATA[year]["base"]
+    summary_file_dir = base + ACS_METADATA[year][summary_level]['tables']
+    data = pd.read_csv(f"{summary_file_dir}/{table_name}", sep="|")
+    return data
+
+
+def extract_values_at_specified_levels(df: pd.DataFrame, geoids: pd.DataFrame):
+    joined = pd.merge(df,geoids[["DADSID","SUMLEVEL"]], left_on="GEO_ID", right_on="DADSID", how='left')
+    result = {}
+
+    for (level, id) in SUMMARY_LEVELS.items():
+        result[level]=joined[joined['SUMLEVEL']==id].drop(["DADSID","SUMLEVEL"],axis=1)
+    return result         
+
+def merge_parquet_files(file_names):
+    result=pd.DataFrame()
+    for batch in tqdm(batched(file_names,20)):
+        newDFS = [select_estimates(pd.read_parquet(file).set_index("GEO_ID")) for file in batch]
+        result = pd.concat([result] + newDFS  ,axis=1)
+    return result
+
+
+@asset 
+def generate_variable_dictionary():
+    metadata = ACS_METADATA[year]
+    base = metadata["base"]
+    shells = metadata[summary_level]["shells"]
+    raw= pd.read_csv(base+shells, encoding="latin")    
+    result = [] # pd.DataFrame(columns=["tableID","uniqueID", "universe","tableName", "variableName", "variableExtedndedName"])
+
+    universe =""
+    tableName = ""
+    path =[]
+    previousWasEdge = True 
+    for (index,row) in raw.iterrows():
+        if(( type(row["Table ID"]) == str and len(row["Table ID"].strip())==0) or type(row["Table ID"]) == float):
+            # path=[]
+            # previousWasEdge = True 
+            continue
+
+        stub = row["Stub"]
+
+        if (row[["UniqueID"]].isna().all()):
+            if("Universe" in stub):
+                universe = stub.split("Universe:")[1].strip()
+            else:
+                tableName=stub
+        else:
+            if (":" in stub):
+                if(previousWasEdge):
+                    path.append(stub.replace(":",""))
+                else:
+                    path.pop()
+                    path.append(stub.replace(":",""))
+            else:
+                previousWasEdge = False 
+            extendedName = "|".join(path) 
+            if(":" not in stub):
+                extendedName = extendedName + "|"+stub
+            result.append({"tableID": row["Table ID"], "uniqueID":row["UniqueID"], "universe":universe, "variableName":stub, "variableExtendedName": extendedName})
+    
+    return pd.DataFrame.from_records(result)
+
+
+
+@multi_asset(
+    outs={
+        "tract_files": AssetOut(),
+        "blockGroup_files": AssetOut(),
+        "county_files": AssetOut()
+    },
+    partitions_def=raw_table_files_partition
+)
+def aws_table_files(context, geometry_ids, summary_table_names):
+    base = ACS_METADATA[year]["base"]
+    summary_file_dir = base + ACS_METADATA[year][summary_level]['tables']
+    
+    context.log.info("Trying to get partition name")
+    table = context.asset_partition_key_for_output()
+    context.log.info("table is ",table)
+
+    data = get_summary_table(table, year, summary_level) 
+
+    context.log.info("got summary table")
+    values = extract_values_at_specified_levels(data, geometry_ids)
+    context.log.info("extracted values ", values)
+    # values['tract'].to_parquet(os.path.join(tractDir,table.replace(".dat",".parquet")))
+    # values['county'].to_parquet(os.path.join(countyDir,table.replace(".dat",".parquet")))
+    # values['block_group'].to_parquet(os.path.join(blockGroupDir,table.replace(".dat",".parquet")))
+    
+    return  values['tract'], values['county'], values['block_group']
+
+# @asset
+# def merge_parquet_files(tract_parquet_files, blockGroup_parquet_files, county_parquet_files):
+#     # merge_parquet_files([os.path.join(countyDir,file) for file in os.listdir(countyDir)]).to_parquet(f"county_{year}_{summary_level}.parquet"
+#     merge_parquet_files([os.path.join(tract_parquet_files,file) for file in os.listdir(tractDir)]).to_parquet(f"tracts_{year}_{summary_level}.parquet")
+#     # merge_parquet_files([os.path.join(blockGroupDir,file) for file in os.listdir(blockGroupDir)]).to_parquet(f"block_groups_{year}_{summary_level}.parquet")
+
+    
+
+
+        
+#
+# @asset 
+# def cartographic_file()
+#     metadata = ACS_METADATA[year]
+#     url = metadata['geors'][admin_level]
+#     if(work_dir == None):
+#         work_dir = os.tmpdir() 
+#     local_dir = os.path.join(work_dir, admin_level+".zip")
+#     urllib.request.urlretrieve(url, local_dir)
+#     return local_dir
+#
+@asset
+def geometry_ids():
+    path = ACS_METADATA[year]["base"] + ACS_METADATA[year][summary_level]['geoIds']
+    sep = ACS_METADATA[year]["geoIdsSep"] if "geoIdsSep" in ACS_METADATA[year] else ","
+    table = pd.read_csv(path, encoding='latin', sep=sep)
+    return table
+#
+#
+@asset 
+def summary_table_names(context):
+    metadata = ACS_METADATA[year]
+    base = metadata['base']
+    table_path =  base + metadata[summary_level]['tables'] 
+    
+    table = pd.read_html(table_path)[0]
+    filtered = table[table['Name'].str.startswith("acs",na=False)]
+
+    partition = context.instance.get_dynamic_partitions("raw_table_files")
+
+    # [context.instance.delete_dynamic_partition('raw_table_files', part) for part in parts_to_del]
+
+    context.instance.add_dynamic_partitions('raw_table_files', list(filtered["Name"]))
+
+    # for name in filtered["Name"]
+    #     raw_table_files_partition.build_add_request(name)
+
+    return list(filtered["Name"])
+
+@asset()
+def raw_cartography_file():
+    metadata = ACS_METADATA[year]
+    url = metadata['geoms']["tracts"]
+    local_dir = os.path.join(geo_dir, "tracts"+".zip")
+    urllib.request.urlretrieve(url, local_dir)
+    return local_dir
+
+@asset()
+def cartography_in_cloud_formats(raw_cartography_file):
+    path = raw_cartography_file
+    data=  gp.read_file(f"zip://{path}")
+    parquet_path = path.replace(".zip",".parquet")
+    flatgeobuff_path = path.replace(".zip",".flatgeobuff")
+    geojson_seq_path = path.replace(".zip", ".geojsonseq")
+
+    data.to_parquet(parquet_path)
+    data.to_file(flatgeobuff_path, driver="FlatGeobuf")
+    data.to_file(geojson_seq_path, driver="GeoJSONSeq")
+    return {"parquet_path": parquet_path, "flatgeobuff_path":flatgeobuff_path, "geojson_seq_path": geojson_seq_path}
+
+@asset()
+def generate_pmtiles(context,cartography_in_cloud_formats):
+    client = docker.from_env()
+    mount_folder = Path(cartography_in_cloud_formats["geojson_seq_path"]).parent.resolve()
+
+    container =client.containers.run("stuartlynn/tippecanoe:latest",
+                          "tippecanoe -o tracts.pmtiles tracts.geojsonseq",
+                          volumes={mount_folder: {"bind":"/app","mode":"rw"} },
+                          detach=True,
+                          remove=True)
+
+    output = container.attach(stdout=True, stream=True, logs=True);
+    for line in output:
+        context.log.info(line)
diff --git a/popgetter/assets/us/config.py b/popgetter/assets/us/config.py
new file mode 100644
index 0000000..9e8faf7
--- /dev/null
+++ b/popgetter/assets/us/config.py
@@ -0,0 +1,86 @@
+
+SUMMARY_LEVELS={
+    "tract": 140 ,
+    "block_group":150,
+    "county":50
+}
+
+ACS_METADATA={
+    # 2018 needs additional logic for joining together geometry files
+    # 2018:{
+    #     base:"https://www2.census.gov/programs-surveys/acs/summary_file/2018",
+    #     type:'table',
+    #     geoms:{
+    #         tract:,
+    #         block:"",
+    #         county:"https://www2.census.gov/geo/tiger/GENZ2018/shp/cb_2018_us_county_500k.zip":
+    #     }
+    #     oneYear:{
+    #         tables:"prototype/1YRData/",
+    #         geoIds:"https://www2.census.gov/programs-surveys/acs/summary_file/2018/prototype/20181YRGeos.csv",
+    #         shells:"prototype/ACS2018_Table_Shells.xlsx"
+    #     },
+    #     fiveYear:{
+    #         tables:"prototype/5YRData/",
+    #         geoIds:"https://www2.census.gov/programs-surveys/acs/summary_file/2018/prototype/20185YRGeos.csv",
+    #         shells:"prototype/ACS2018_Table_Shells.xlsx"
+    #     }
+    # },
+    2019:{
+        "base" : "https://www2.census.gov/programs-surveys/acs/summary_file/2019/",
+        "type":'table',
+        "geoms":{
+            "tracts": "https://www2.census.gov/geo/tiger/GENZ2019/shp/cb_2019_us_tract_500k.zip",
+            "blockGroups":"https://www2.census.gov/geo/tiger/GENZ2019/shp/cb_2019_us_bg_500k.zip",
+            "county": "https://www2.census.gov/geo/tiger/GENZ2019/shp/cb_2019_us_county_500k.zip"
+        },
+        "oneYear":{
+            "tables":"prototype/1YRData/",
+            "geoIds":"prototype/Geos20191YR.csv",
+            "shells":"prototype/ACS2019_Table_Shells.csv"
+        },
+        "fiveYear":{
+            "tables":"prototype/5YRData/",
+            "geoIds":"prototype/Geos20195YR.csv",
+            "shells":"prototype/ACS2019_Table_Shells.csv"
+        }
+    },
+    # Note 1 year esimates are not avaliable because of covid. More details of the exeprimental estimates 
+    # are here : https://www.census.gov/programs-surveys/acs/technical-documentation/table-and-geography-changes/2020/1-year.html
+    2020:{
+        "base":"https://www2.census.gov/programs-surveys/acs/summary_file/2020/",
+        "type":'table',
+        "geoms":{
+            "tracts":"https://www2.census.gov/geo/tiger/GENZ2020/shp/cb_2020_us_tract_500k.zip",
+            "blockGroups":"https://www2.census.gov/geo/tiger/GENZ2020/shp/cb_2020_us_bg_500k.zip",
+            "county":"https://www2.census.gov/geo/tiger/GENZ2020/shp/cb_2020_us_county_500k.zip"
+        },
+        "shells":"prototype/ACS2020_Table_Shells.csv",
+        "oneYear":None,
+        "fiveYear":{
+            "shells":"prototype/ACS2020_Table_Shells.csv",
+            "tables":"prototype/5YRData/",
+            "geoIds":"prototype/Geos20205YR.csv",
+        }
+    },
+    2021:{
+        "base":"https://www2.census.gov/programs-surveys/acs/summary_file/2021/table-based-SF/",
+        "type":'table',
+        "geoIdsSep":"|",
+        "geoms":{
+            "tracts":"https://www2.census.gov/geo/tiger/GENZ2021/shp/cb_2021_us_tract_500k.zip",
+            "blockGroups":"https://www2.census.gov/geo/tiger/GENZ2021/shp/cb_2021_us_bg_500k.zip",
+            "county":"https://www2.census.gov/geo/tiger/GENZ2021/shp/cb_2021_us_county_500k.zip"
+        },
+        "oneYear":{
+            "tables":"data/1YRData/",
+            "geoIds":"documentation/Geos20211YR.txt",
+            "shells":"documentation/ACS20211YR_Table_Shells.txt"
+        },
+        "fiveYear":{
+            "tables":"data/5YRData/",
+            "geoIds":"documentation/Geos20215YR.txt",
+            "shells":"documentation/ACS20215YR_Table_Shells.txt"
+        }
+     }
+}
diff --git a/popgetter/utils.py b/popgetter/utils.py
new file mode 100644
index 0000000..b6e7816
--- /dev/null
+++ b/popgetter/utils.py
@@ -0,0 +1,172 @@
+import xml.etree.ElementTree as ET
+import subprocess
+import os
+import datetime
+import requests, zipfile, io
+from pathlib import Path
+import fsspec
+from io import BytesIO
+import base64
+
+
+DOWNLOAD_ROOT = Path(__file__).parent.absolute() / "data"
+CACHE_ROOT = Path(__file__).parent.absolute() / "cache"
+
+
+def markdown_from_plot(plot) -> str:
+    plot.tight_layout()
+
+    # Convert the image to a saveable format
+    buffer = BytesIO()
+    plot.savefig(buffer, format="png")
+    image_data = base64.b64encode(buffer.getvalue())
+
+    # Convert the image to Markdown to preview it within Dagster
+    return f"![img](data:image/png;base64,{image_data.decode()})"
+
+
+def _last_update(file_path):
+    """
+    Returns the date and time of the last update to the file at `file_path`.
+    """
+    if not os.path.exists(file_path):
+        return None
+    last_update = os.path.getmtime(file_path)
+    return datetime.datetime.fromtimestamp(last_update)
+
+def download_from_wfs(wfs_url, output_file):
+    """
+    Downloads data from a WFS (`wfs_url`) and saves it to a file (`output_file`).
+    
+    The `ogr2ogr` command line tool is used to workaround the feature count limit that can be imposed by the server. (See https://gdal.org/drivers/vector/wfs.html#request-paging and https://gis.stackexchange.com/questions/422609/downloading-lots-of-data-from-wfs for details).
+
+    Parameters
+    ----------
+    wfs_url : str
+        The URL of the WFS.
+    output_file : str
+        The name of the output file.
+    """
+    template = r"""
+        <OGRWFSDataSource>
+            <URL>CHANGE_ME</URL>
+            <PagingAllowed>ON</PagingAllowed>
+            <PageSize>1000</PageSize>
+        </OGRWFSDataSource>
+    """
+
+    print("Writing OGR Virtual Format file")
+    root = ET.fromstring(template)
+    root.find("URL").text = wfs_url
+
+    with open(f"{output_file}.xml", "w") as f:
+        f.write(ET.tostring(root).decode())
+
+    print("Running ogr2ogr")
+    # subprocess.run(["ogrinfo", "-ro", f"{output_file}.xml"])
+    subprocess.run(["ogr2ogr", "-f", "GeoJSON", f"{output_file}.geojson", f"{output_file}.xml"])
+
+    print("Done")
+
+
+def download_from_arcgis_online(serviceItemId, output_file, force=False):
+    """
+    Downloads data from ArcGIS Online and saves it to a file (`output_file`). This function can only download data that is available to anonymous users.
+    The data will only be downloaded if the output file does not exist, or if the data on ArcGIS Online has been updated since the output file was last updated. Use `force=True` will cause the data to be re-downloaded if it an uptodate file exists locally.
+    """
+    try:
+        from arcgis.gis import GIS
+    except ImportError:
+        print("Unable to import `arcgis`. Please install the `arcgis` package, using the command `pip install -r requirements-non-foss.txt.")
+        return
+    
+    # Anonymous access to ArcGIS Online
+    gis = GIS()
+
+    # Get the `Item`, then, `FeatureLayer` then 'FeatureSet`:
+    agol_item = gis.content.get(serviceItemId)
+    print(f"Got item: {agol_item}")
+    print(f"item metadata: {agol_item.metadata}")
+
+    agol_layer = agol_item.layers[0]
+
+    # Get the last edit datetime for the layer
+    # print(f"Got layer: {agol_layer.properties}")
+    lyr_props = agol_layer.properties
+    # Epoch time in milliseconds - convert to datetime
+    lyr_last_edit = lyr_props.get("editingInfo", {}).get("lastEditDate", None)
+    if lyr_last_edit:
+        lyr_last_edit = datetime.datetime.fromtimestamp(lyr_last_edit/1000)
+
+    print(f"last_edit: {lyr_last_edit}")
+
+    # If the output file exists, check the last edit time
+    output_last_edit = _last_update(output_file)
+
+    if not force and output_last_edit and lyr_last_edit and output_last_edit > lyr_last_edit:
+        print(f"Output file is up-to-date: {output_file}")
+        return
+    
+    print(f"Output file is out-of-date: {output_file}")
+
+    agol_feature_set = agol_layer.query()
+    print(f"Got feature set: {len(agol_feature_set)}")
+    
+    # Write to geojson file
+    with open(output_file, "w") as f:
+        f.write(agol_feature_set.to_geojson)
+
+    print("Done")
+
+
+def get_path_to_cache(url: str, cache_path: Path | None, mode = 'b',) -> fsspec.core.OpenFile:
+    """
+    Returns the path(s) to the local cached files for a given URL.
+    Downloads the file if it is not already cached.
+    """
+    cache_storage = str(CACHE_ROOT / cache_path)
+
+    # If a cache path is provided, enforce the use of simplecache
+    if cache_path and not url.startswith("simplecache::"):
+        url = f"simplecache::{url}"
+
+    if ("w" not in mode) and ("r" not in mode):
+        mode = f"r{mode}"
+
+    return fsspec.open(url, mode, 
+        simplecache={
+            "cache_storage":cache_storage,
+            "check_files":False,
+        })
+
+def download_zipped_files(zipfile_url, output_dpath):
+    """
+    Downloads a zipped file from a URL and extracts it to a folder.
+
+    Raises a ValueError if the output folder is not empty.
+    """
+    output_dpath = Path(output_dpath).absolute()
+    output_dpath.mkdir(parents=True, exist_ok=True)
+
+    if any(output_dpath.iterdir()):
+        raise ValueError(f"Directory {output_dpath} is not empty. Skipping download.")
+
+    r = requests.get(zipfile_url)
+    z = zipfile.ZipFile(io.BytesIO(r.content))
+    z.extractall(output_dpath)
+
+
+if __name__ == "__main__":
+    # This is for testing only
+    oa_wfs_url = "https://dservices1.arcgis.com/ESMARspQHYMw9BZ9/arcgis/services/Output_Areas_Dec_2021_Boundaries_Generalised_Clipped_EW_BGC_/WFSServer?service=wfs",
+    layer_name = "Output_Areas_Dec_2021_Boundaries_Generalised_Clipped_EW"
+
+    print(f"URL: {oa_wfs_url}")
+    print(f"Layer: {layer_name}")
+
+    # serviceItemId taken from:
+    # https://services1.arcgis.com/ESMARspQHYMw9BZ9/arcgis/rest/services/Output_Areas_Dec_2021_Boundaries_Generalised_Clipped_EW_BGC_2022/FeatureServer/0?f=pjson
+    serviceItemId = "6c6743e1e4b444f6afcab9d9588f5d8f"
+
+    # download_from_wfs(oa_wfs_url, layer_name)
+    download_from_arcgis_online(serviceItemId, "data/oa_from_agol2.geojson")
diff --git a/Cargo.lock b/previous_code/Cargo.lock
similarity index 100%
rename from Cargo.lock
rename to previous_code/Cargo.lock
diff --git a/Cargo.toml b/previous_code/Cargo.toml
similarity index 100%
rename from Cargo.toml
rename to previous_code/Cargo.toml
diff --git a/belgium.py b/previous_code/belgium.py
similarity index 100%
rename from belgium.py
rename to previous_code/belgium.py
diff --git a/usage.md b/previous_code/previous_code_usage.md
similarity index 100%
rename from usage.md
rename to previous_code/previous_code_usage.md
diff --git a/previous_code/previous_readme.md b/previous_code/previous_readme.md
new file mode 100644
index 0000000..ff1195d
--- /dev/null
+++ b/previous_code/previous_readme.md
@@ -0,0 +1,83 @@
+# popgetter
+
+This is a scratch-space to experiment with coercing census data from different
+places into a common format. See
+<https://dabreegster.github.io/talks/census_pitch/slides.html>
+
+## Notes
+
+- dadroit is the best known way to poke at big JSON files
+
+## Requirements
+
+- *NIX-like environment (Linux, MacOS, WSL on Windows)
+- Python
+- mapshaper (See https://github.com/mbloch/mapshaper#installation)
+- wget (not standard on Windows)
+
+### Optional dependency - ArcGIS API for Python
+To be able to download data from ArcGIS Online, you need to install ESRI's "ArcGIS API for Python".
+```
+pip install -r requirements-non-foss.txt
+```
+
+NOTE: Installation on Ubunutu 20.04 requires `libkrb5-dev` to be installed first.
+
+One of the indirect dependencies of the ArcGIS API for Python is `krb5-config`. The gssapi wheel needed this to build on Ubuntu 20.04 machine (apple/ccs-pykerberos#66). On Ubuntu, the package is `libkrb5-dev`, not `krb5-config`. [See here for details]]https://github.com/apple/ccs-pykerberos/issues/66).
+
+TODO: The ArcGIS API for Python  docs claim that it is possible to [install it with minimal dependencies](https://developers.arcgis.com/python/guide/anaconda#install-with-minimum-dependencies). However, this did not work exactly as stated in the docs. At some point, it might be worth looking at what the minimal dependencies are for our use case. (This will probably also solve the `krb5-config` issue above.)
+
+### Optional dependency - OGR
+
+To be able to download data from WFS (Web Feature Service), you need [GDAL/OGR](https://gdal.org/download.html):
+
+- ogr2ogr
+
+
+##  Data (England and Wales)
+
+### Geometries (Output Areas)
+
+There are three different versions of the Output Areas (OAs) available from the ONS. By ad-hoc visual inspection, the Generalised Clipped EW (BGC) at least as good as the current data - but will review.
+
+Each of these versions has 188880 records. This is consistent with the census data (see below).
+
+- [Output Areas (Dec 2021) Boundaries Generalised Clipped EW (BGC)](https://geoportal.statistics.gov.uk/datasets/ons::output-areas-dec-2021-boundaries-generalised-clipped-ew-bgc)
+- [Output Areas (Dec 2021) Boundaries Full Clipped EW (BFC)](https://geoportal.statistics.gov.uk/datasets/ons::output-areas-dec-2021-boundaries-full-clipped-ew-bfc)
+- [Output Areas (2021) EW BFE (?Boundary Full Extent?)](https://geoportal.statistics.gov.uk/datasets/ons::output-areas-2021-ew-bfe/)
+
+### Census Information
+
+Numerous potential queries can be made to the census data. For now we are focused on car ownership.
+
+The WebUI to access the car ownership census data is here:
+https://www.ons.gov.uk/datasets/TS045/editions/2021/versions/3/filter-outputs/a20437fb-ae7f-439b-bc91-de261335038b#get-data
+This need to be downloaded manually.
+
+The csv can be downloaded using wget from this URL (though it is unclear if this URL will remain valid)):
+CENSUS_URL = "https://static.ons.gov.uk/datasets/a20437fb-ae7f-439b-bc91-de261335038b/TS045-2021-3-filtered-2023-03-13T16:49:47Z.csv"
+
+This has 944401 lines (including the header)
+944400 / 188880 = 5 categories per OA, which is what we expect.
+
+### Census data from browser download
+
+The WebUI to access the car ownership census data is here:
+https://www.ons.gov.uk/datasets/TS045/editions/2021/versions/3/filter-outputs/a20437fb-ae7f-439b-bc91-de261335038b#get-data
+This need to be downloaded manually.
+
+The csv can be downloaded using wget from this URL (though it is unclear if this URL will remain valid)):
+CENSUS_URL = "https://static.ons.gov.uk/datasets/a20437fb-ae7f-439b-bc91-de261335038b/TS045-2021-3-filtered-2023-03-13T16:49:47Z.csv"
+
+This has 944401 lines (including the header)
+944400 / 188880 = 5 categories per OA, which is what we expect.
+
+### Census data using the NOMIS API and UKCensusAPI
+
+TBC:
+
+> I tried generating the API link through https://www.nomisweb.co.uk, but got an internal error of some sort.
+
+I also tried this and got the same error message. However, in the [help](https://www.nomisweb.co.uk/api/v01/help), it states that there is a 25000 cell limit per request, which might be the issue we're hitting. It is possible to obtain an API key which increases the limit to 1 million cells. See https://github.com/virgesmith/UKCensusAPI#api-key
+
+1M limit would be enough for the whole of England, for five categories per OA, but would not be sufficient for more complex census queries. In these cases, we could loop through batches of OA codes and then merge the results. Might be useful if we want to the be able to get lots of different data from NOMIS. It's not clear if the UKCensusAPI package can do this. If not then it might be appropriate to make a PR to that package rather then adding it here.
diff --git a/requirements.txt b/previous_code/requirements.txt
similarity index 100%
rename from requirements.txt
rename to previous_code/requirements.txt
diff --git a/singapore/data_sources.md b/previous_code/singapore/data_sources.md
similarity index 100%
rename from singapore/data_sources.md
rename to previous_code/singapore/data_sources.md
diff --git a/singapore/population_by_age_gender.py b/previous_code/singapore/population_by_age_gender.py
similarity index 100%
rename from singapore/population_by_age_gender.py
rename to previous_code/singapore/population_by_age_gender.py
diff --git a/src/getter.rs b/previous_code/src/getter.rs
similarity index 100%
rename from src/getter.rs
rename to previous_code/src/getter.rs
diff --git a/src/lib.rs b/previous_code/src/lib.rs
similarity index 100%
rename from src/lib.rs
rename to previous_code/src/lib.rs
diff --git a/src/main.rs b/previous_code/src/main.rs
similarity index 100%
rename from src/main.rs
rename to previous_code/src/main.rs
diff --git a/src/uk.rs b/previous_code/src/uk.rs
similarity index 100%
rename from src/uk.rs
rename to previous_code/src/uk.rs
diff --git a/previous_code/us/demo_app/.svelte-kit/ambient.d.ts b/previous_code/us/demo_app/.svelte-kit/ambient.d.ts
new file mode 100644
index 0000000..70bc7d2
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/ambient.d.ts
@@ -0,0 +1,261 @@
+
+// this file is generated — do not edit it
+
+
+/// <reference types="@sveltejs/kit" />
+
+/**
+ * Environment variables [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env`. Like [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), this module cannot be imported into client-side code. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured).
+ * 
+ * _Unlike_ [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), the values exported from this module are statically injected into your bundle at build time, enabling optimisations like dead code elimination.
+ * 
+ * ```ts
+ * import { API_KEY } from '$env/static/private';
+ * ```
+ * 
+ * Note that all environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed:
+ * 
+ * ```
+ * MY_FEATURE_FLAG=""
+ * ```
+ * 
+ * You can override `.env` values from the command line like so:
+ * 
+ * ```bash
+ * MY_FEATURE_FLAG="enabled" npm run dev
+ * ```
+ */
+declare module '$env/static/private' {
+	export const NVM_RC_VERSION: string;
+	export const npm_package_dependencies_duckdb: string;
+	export const npm_package_devDependencies_prettier: string;
+	export const ZELLIJ: string;
+	export const npm_package_devDependencies_eslint_plugin_svelte: string;
+	export const npm_package_dependencies_lit_html: string;
+	export const NODE: string;
+	export const NVM_CD_FLAGS: string;
+	export const npm_package_devDependencies_prettier_plugin_svelte: string;
+	export const npm_package_devDependencies_typescript: string;
+	export const INIT_CWD: string;
+	export const SHELL: string;
+	export const TERM: string;
+	export const npm_package_devDependencies_vite: string;
+	export const npm_package_dependencies__spectrum_web_components_theme: string;
+	export const TMPDIR: string;
+	export const npm_package_dependencies__spectrum_web_components_bundle: string;
+	export const npm_package_scripts_lint: string;
+	export const WINDOWID: string;
+	export const npm_package_scripts_dev: string;
+	export const npm_package_private: string;
+	export const npm_package_devDependencies__sveltejs_kit: string;
+	export const npm_config_registry: string;
+	export const LC_ALL: string;
+	export const ZSH: string;
+	export const PNPM_HOME: string;
+	export const USER: string;
+	export const NVM_DIR: string;
+	export const LS_COLORS: string;
+	export const npm_package_scripts_check_watch: string;
+	export const ALACRITTY_SOCKET: string;
+	export const COMMAND_MODE: string;
+	export const PNPM_SCRIPT_SRC_DIR: string;
+	export const npm_package_dependencies_svelte_virtual_table: string;
+	export const ALACRITTY_LOG: string;
+	export const SSH_AUTH_SOCK: string;
+	export const npm_package_dependencies_lodash: string;
+	export const __CF_USER_TEXT_ENCODING: string;
+	export const npm_package_devDependencies_eslint: string;
+	export const npm_package_devDependencies__typescript_eslint_eslint_plugin: string;
+	export const npm_package_devDependencies_tslib: string;
+	export const npm_execpath: string;
+	export const PAGER: string;
+	export const npm_package_devDependencies_svelte: string;
+	export const LSCOLORS: string;
+	export const npm_config_frozen_lockfile: string;
+	export const npm_package_devDependencies__typescript_eslint_parser: string;
+	export const npm_package_dependencies_just_flush: string;
+	export const PATH: string;
+	export const npm_package_dependencies__spectrum_web_components_iconset: string;
+	export const npm_config_engine_strict: string;
+	export const __CFBundleIdentifier: string;
+	export const NVM_NODEJS_ORG_MIRROR: string;
+	export const PWD: string;
+	export const npm_command: string;
+	export const npm_package_scripts_preview: string;
+	export const npm_package_devDependencies__types_lodash: string;
+	export const npm_lifecycle_event: string;
+	export const npm_package_name: string;
+	export const npm_package_scripts_test_integration: string;
+	export const npm_config_resolution_mode: string;
+	export const NODE_PATH: string;
+	export const npm_package_scripts_build: string;
+	export const XPC_FLAGS: string;
+	export const npm_package_devDependencies_vitest: string;
+	export const npm_package_devDependencies_eslint_config_prettier: string;
+	export const npm_config_node_gyp: string;
+	export const XPC_SERVICE_NAME: string;
+	export const npm_package_version: string;
+	export const npm_package_devDependencies__sveltejs_adapter_auto: string;
+	export const npm_package_devDependencies_svelte_check: string;
+	export const HOME: string;
+	export const SHLVL: string;
+	export const npm_package_type: string;
+	export const npm_package_scripts_test: string;
+	export const npm_package_dependencies_svelte_maplibre: string;
+	export const npm_package_dependencies__sveltejs_svelte_virtual_list: string;
+	export const LOGNAME: string;
+	export const LESS: string;
+	export const npm_package_scripts_format: string;
+	export const ALACRITTY_WINDOW_ID: string;
+	export const npm_lifecycle_script: string;
+	export const npm_package_dependencies_pmtiles: string;
+	export const npm_config_user_agent: string;
+	export const npm_package_devDependencies__playwright_test: string;
+	export const npm_package_dependencies_maplibre_gl: string;
+	export const npm_package_scripts_check: string;
+	export const COLORTERM: string;
+	export const ZELLIJ_SESSION_NAME: string;
+	export const npm_package_scripts_test_unit: string;
+	export const npm_node_execpath: string;
+	export const NODE_ENV: string;
+}
+
+/**
+ * Similar to [`$env/static/private`](https://kit.svelte.dev/docs/modules#$env-static-private), except that it only includes environment variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code.
+ * 
+ * Values are replaced statically at build time.
+ * 
+ * ```ts
+ * import { PUBLIC_BASE_URL } from '$env/static/public';
+ * ```
+ */
+declare module '$env/static/public' {
+	
+}
+
+/**
+ * This module provides access to runtime environment variables, as defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/master/packages/adapter-node) (or running [`vite preview`](https://kit.svelte.dev/docs/cli)), this is equivalent to `process.env`. This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://kit.svelte.dev/docs/configuration#env) (if configured).
+ * 
+ * This module cannot be imported into client-side code.
+ * 
+ * ```ts
+ * import { env } from '$env/dynamic/private';
+ * console.log(env.DEPLOYMENT_SPECIFIC_VARIABLE);
+ * ```
+ * 
+ * > In `dev`, `$env/dynamic` always includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter.
+ */
+declare module '$env/dynamic/private' {
+	export const env: {
+		NVM_RC_VERSION: string;
+		npm_package_dependencies_duckdb: string;
+		npm_package_devDependencies_prettier: string;
+		ZELLIJ: string;
+		npm_package_devDependencies_eslint_plugin_svelte: string;
+		npm_package_dependencies_lit_html: string;
+		NODE: string;
+		NVM_CD_FLAGS: string;
+		npm_package_devDependencies_prettier_plugin_svelte: string;
+		npm_package_devDependencies_typescript: string;
+		INIT_CWD: string;
+		SHELL: string;
+		TERM: string;
+		npm_package_devDependencies_vite: string;
+		npm_package_dependencies__spectrum_web_components_theme: string;
+		TMPDIR: string;
+		npm_package_dependencies__spectrum_web_components_bundle: string;
+		npm_package_scripts_lint: string;
+		WINDOWID: string;
+		npm_package_scripts_dev: string;
+		npm_package_private: string;
+		npm_package_devDependencies__sveltejs_kit: string;
+		npm_config_registry: string;
+		LC_ALL: string;
+		ZSH: string;
+		PNPM_HOME: string;
+		USER: string;
+		NVM_DIR: string;
+		LS_COLORS: string;
+		npm_package_scripts_check_watch: string;
+		ALACRITTY_SOCKET: string;
+		COMMAND_MODE: string;
+		PNPM_SCRIPT_SRC_DIR: string;
+		npm_package_dependencies_svelte_virtual_table: string;
+		ALACRITTY_LOG: string;
+		SSH_AUTH_SOCK: string;
+		npm_package_dependencies_lodash: string;
+		__CF_USER_TEXT_ENCODING: string;
+		npm_package_devDependencies_eslint: string;
+		npm_package_devDependencies__typescript_eslint_eslint_plugin: string;
+		npm_package_devDependencies_tslib: string;
+		npm_execpath: string;
+		PAGER: string;
+		npm_package_devDependencies_svelte: string;
+		LSCOLORS: string;
+		npm_config_frozen_lockfile: string;
+		npm_package_devDependencies__typescript_eslint_parser: string;
+		npm_package_dependencies_just_flush: string;
+		PATH: string;
+		npm_package_dependencies__spectrum_web_components_iconset: string;
+		npm_config_engine_strict: string;
+		__CFBundleIdentifier: string;
+		NVM_NODEJS_ORG_MIRROR: string;
+		PWD: string;
+		npm_command: string;
+		npm_package_scripts_preview: string;
+		npm_package_devDependencies__types_lodash: string;
+		npm_lifecycle_event: string;
+		npm_package_name: string;
+		npm_package_scripts_test_integration: string;
+		npm_config_resolution_mode: string;
+		NODE_PATH: string;
+		npm_package_scripts_build: string;
+		XPC_FLAGS: string;
+		npm_package_devDependencies_vitest: string;
+		npm_package_devDependencies_eslint_config_prettier: string;
+		npm_config_node_gyp: string;
+		XPC_SERVICE_NAME: string;
+		npm_package_version: string;
+		npm_package_devDependencies__sveltejs_adapter_auto: string;
+		npm_package_devDependencies_svelte_check: string;
+		HOME: string;
+		SHLVL: string;
+		npm_package_type: string;
+		npm_package_scripts_test: string;
+		npm_package_dependencies_svelte_maplibre: string;
+		npm_package_dependencies__sveltejs_svelte_virtual_list: string;
+		LOGNAME: string;
+		LESS: string;
+		npm_package_scripts_format: string;
+		ALACRITTY_WINDOW_ID: string;
+		npm_lifecycle_script: string;
+		npm_package_dependencies_pmtiles: string;
+		npm_config_user_agent: string;
+		npm_package_devDependencies__playwright_test: string;
+		npm_package_dependencies_maplibre_gl: string;
+		npm_package_scripts_check: string;
+		COLORTERM: string;
+		ZELLIJ_SESSION_NAME: string;
+		npm_package_scripts_test_unit: string;
+		npm_node_execpath: string;
+		NODE_ENV: string;
+		[key: `PUBLIC_${string}`]: undefined;
+		[key: `${string}`]: string | undefined;
+	}
+}
+
+/**
+ * Similar to [`$env/dynamic/private`](https://kit.svelte.dev/docs/modules#$env-dynamic-private), but only includes variables that begin with [`config.kit.env.publicPrefix`](https://kit.svelte.dev/docs/configuration#env) (which defaults to `PUBLIC_`), and can therefore safely be exposed to client-side code.
+ * 
+ * Note that public dynamic environment variables must all be sent from the server to the client, causing larger network requests — when possible, use `$env/static/public` instead.
+ * 
+ * ```ts
+ * import { env } from '$env/dynamic/public';
+ * console.log(env.PUBLIC_DEPLOYMENT_SPECIFIC_VARIABLE);
+ * ```
+ */
+declare module '$env/dynamic/public' {
+	export const env: {
+		[key: `PUBLIC_${string}`]: string | undefined;
+	}
+}
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/client/app.js b/previous_code/us/demo_app/.svelte-kit/generated/client/app.js
new file mode 100644
index 0000000..ac5c9be
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/client/app.js
@@ -0,0 +1,19 @@
+export { matchers } from './matchers.js';
+
+export const nodes = [
+	() => import('./nodes/0'),
+	() => import('./nodes/1'),
+	() => import('./nodes/2')
+];
+
+export const server_loads = [];
+
+export const dictionary = {
+		"/": [2]
+	};
+
+export const hooks = {
+	handleError: (({ error }) => { console.error(error) }),
+};
+
+export { default as root } from '../root.svelte';
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/client/matchers.js b/previous_code/us/demo_app/.svelte-kit/generated/client/matchers.js
new file mode 100644
index 0000000..f6bd30a
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/client/matchers.js
@@ -0,0 +1,1 @@
+export const matchers = {};
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/0.js b/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/0.js
new file mode 100644
index 0000000..b2e56b2
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/0.js
@@ -0,0 +1,3 @@
+import * as universal from "../../../../src/routes/+layout.ts";
+export { universal };
+export { default as component } from "../../../../src/routes/+layout.svelte";
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/1.js b/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/1.js
new file mode 100644
index 0000000..fbfbbe0
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/1.js
@@ -0,0 +1,1 @@
+export { default as component } from "../../../../node_modules/.pnpm/@sveltejs+kit@1.25.0_svelte@4.2.1_vite@4.4.9/node_modules/@sveltejs/kit/src/runtime/components/error.svelte";
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/2.js b/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/2.js
new file mode 100644
index 0000000..1cb4f85
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/client/nodes/2.js
@@ -0,0 +1,1 @@
+export { default as component } from "../../../../src/routes/+page.svelte";
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/root.svelte b/previous_code/us/demo_app/.svelte-kit/generated/root.svelte
new file mode 100644
index 0000000..5f25f7f
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/root.svelte
@@ -0,0 +1,56 @@
+<!-- This file is generated by @sveltejs/kit — do not edit it! -->
+<script>
+	import { setContext, afterUpdate, onMount, tick } from 'svelte';
+	import { browser } from '$app/environment';
+
+	// stores
+	export let stores;
+	export let page;
+
+	export let constructors;
+	export let components = [];
+	export let form;
+	export let data_0 = null;
+	export let data_1 = null;
+
+	if (!browser) {
+		setContext('__svelte__', stores);
+	}
+
+	$: stores.page.set(page);
+	afterUpdate(stores.page.notify);
+
+	let mounted = false;
+	let navigated = false;
+	let title = null;
+
+	onMount(() => {
+		const unsubscribe = stores.page.subscribe(() => {
+			if (mounted) {
+				navigated = true;
+				tick().then(() => {
+					title = document.title || 'untitled page';
+				});
+			}
+		});
+
+		mounted = true;
+		return unsubscribe;
+	});
+</script>
+
+{#if constructors[1]}
+	<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0}>
+		<svelte:component this={constructors[1]} bind:this={components[1]} data={data_1} {form} />
+	</svelte:component>
+{:else}
+	<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} {form} />
+{/if}
+
+{#if mounted}
+	<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px">
+		{#if navigated}
+			{title}
+		{/if}
+	</div>
+{/if}
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/generated/server/internal.js b/previous_code/us/demo_app/.svelte-kit/generated/server/internal.js
new file mode 100644
index 0000000..7adf44c
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/generated/server/internal.js
@@ -0,0 +1,30 @@
+
+import root from '../root.svelte';
+import { set_building } from '__sveltekit/environment';
+import { set_assets } from '__sveltekit/paths';
+import { set_private_env, set_public_env } from '../../../node_modules/.pnpm/@sveltejs+kit@1.25.0_svelte@4.2.1_vite@4.4.9/node_modules/@sveltejs/kit/src/runtime/shared-server.js';
+
+export const options = {
+	app_template_contains_nonce: false,
+	csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}},
+	csrf_check_origin: true,
+	track_server_fetches: false,
+	embedded: false,
+	env_public_prefix: 'PUBLIC_',
+	env_private_prefix: '',
+	hooks: null, // added lazily, via `get_hooks`
+	preload_strategy: "modulepreload",
+	root,
+	service_worker: false,
+	templates: {
+		app: ({ head, body, assets, nonce, env }) => "<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n\t\t<meta name=\"viewport\" content=\"width=device-width\" />\n\t\t" + head + "\n\t</head>\n\t<body data-sveltekit-preload-data=\"hover\">\n\t\t<div style=\"display: contents\">" + body + "</div>\n\t</body>\n</html>\n",
+		error: ({ status, message }) => "<!DOCTYPE html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,\n\t\t\t\t\tUbuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
+	},
+	version_hash: "r2h9gw"
+};
+
+export function get_hooks() {
+	return {};
+}
+
+export { set_assets, set_building, set_private_env, set_public_env };
diff --git a/previous_code/us/demo_app/.svelte-kit/tsconfig.json b/previous_code/us/demo_app/.svelte-kit/tsconfig.json
new file mode 100644
index 0000000..d5b888f
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/tsconfig.json
@@ -0,0 +1,46 @@
+{
+	"compilerOptions": {
+		"paths": {
+			"$lib": [
+				"../src/lib"
+			],
+			"$lib/*": [
+				"../src/lib/*"
+			]
+		},
+		"rootDirs": [
+			"..",
+			"./types"
+		],
+		"importsNotUsedAsValues": "error",
+		"isolatedModules": true,
+		"preserveValueImports": true,
+		"lib": [
+			"esnext",
+			"DOM",
+			"DOM.Iterable"
+		],
+		"moduleResolution": "node",
+		"module": "esnext",
+		"target": "esnext",
+		"ignoreDeprecations": "5.0"
+	},
+	"include": [
+		"ambient.d.ts",
+		"./types/**/$types.d.ts",
+		"../vite.config.ts",
+		"../src/**/*.js",
+		"../src/**/*.ts",
+		"../src/**/*.svelte",
+		"../tests/**/*.js",
+		"../tests/**/*.ts",
+		"../tests/**/*.svelte"
+	],
+	"exclude": [
+		"../node_modules/**",
+		"./[!ambient.d.ts]**",
+		"../src/service-worker.js",
+		"../src/service-worker.ts",
+		"../src/service-worker.d.ts"
+	]
+}
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/types/route_meta_data.json b/previous_code/us/demo_app/.svelte-kit/types/route_meta_data.json
new file mode 100644
index 0000000..745a384
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/types/route_meta_data.json
@@ -0,0 +1,9 @@
+{
+	"/": [
+		"src/routes/+layout.ts",
+		"src/routes/+layout.ts"
+	],
+	"/api/census": [
+		"src/routes/api/census/+server.ts"
+	]
+}
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/types/src/routes/$types.d.ts b/previous_code/us/demo_app/.svelte-kit/types/src/routes/$types.d.ts
new file mode 100644
index 0000000..a61a45f
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/types/src/routes/$types.d.ts
@@ -0,0 +1,22 @@
+import type * as Kit from '@sveltejs/kit';
+
+type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
+type RouteParams = {  }
+type RouteId = '/';
+type MaybeWithVoid<T> = {} extends T ? T | void : T;
+export type RequiredKeys<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T];
+type OutputDataShape<T> = MaybeWithVoid<Omit<App.PageData, RequiredKeys<T>> & Partial<Pick<App.PageData, keyof T & keyof App.PageData>> & Record<string, any>>
+type EnsureDefined<T> = T extends null | undefined ? {} : T;
+type OptionalUnion<U extends Record<string, any>, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude<A, keyof U>]?: never } & U : never;
+export type Snapshot<T = any> = Kit.Snapshot<T>;
+type PageParentData = EnsureDefined<LayoutData>;
+type LayoutRouteId = RouteId | "/" | null
+type LayoutParams = RouteParams & {  }
+type LayoutParentData = EnsureDefined<{}>;
+
+export type PageServerData = null;
+export type PageData = Expand<PageParentData>;
+export type LayoutServerData = null;
+export type LayoutLoad<OutputData extends OutputDataShape<LayoutParentData> = OutputDataShape<LayoutParentData>> = Kit.Load<LayoutParams, LayoutServerData, LayoutParentData, OutputData, LayoutRouteId>;
+export type LayoutLoadEvent = Parameters<LayoutLoad>[0];
+export type LayoutData = Expand<Omit<LayoutParentData, keyof LayoutParentData & EnsureDefined<LayoutServerData>> & OptionalUnion<EnsureDefined<LayoutParentData & EnsureDefined<LayoutServerData>>>>;
\ No newline at end of file
diff --git a/previous_code/us/demo_app/.svelte-kit/types/src/routes/api/census/$types.d.ts b/previous_code/us/demo_app/.svelte-kit/types/src/routes/api/census/$types.d.ts
new file mode 100644
index 0000000..47edc5e
--- /dev/null
+++ b/previous_code/us/demo_app/.svelte-kit/types/src/routes/api/census/$types.d.ts
@@ -0,0 +1,8 @@
+import type * as Kit from '@sveltejs/kit';
+
+type Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;
+type RouteParams = {  }
+type RouteId = '/api/census';
+
+export type RequestHandler = Kit.RequestHandler<RouteParams, RouteId>;
+export type RequestEvent = Kit.RequestEvent<RouteParams, RouteId>;
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..360b2cf
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,6 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.dagster]
+module_name = "popgetter"
diff --git a/requirements-non-foss.txt b/requirements-non-foss.txt
deleted file mode 100644
index 7b892a4..0000000
--- a/requirements-non-foss.txt
+++ /dev/null
@@ -1,1 +0,0 @@
-arcgis~=2.0.0
\ No newline at end of file
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..0745bcb
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,2 @@
+[metadata]
+name = popgetter
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..26f197a
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,19 @@
+from setuptools import find_packages, setup
+
+setup(
+    name="popgetter",
+    packages=find_packages(exclude=["popgetter_tests"]),
+    install_requires=[
+        "dagster",
+        "dagster-cloud",
+        "pandas",
+        "geopandas",
+        "docker",
+        "lxml",
+        "pyarrow",
+        "fsspec",
+        "aiohttp",
+        "matplotlib"
+    ],
+    extras_require={"dev": ["dagster-webserver", "pytest"]},
+)
diff --git a/workspace.yml b/workspace.yml
new file mode 100644
index 0000000..48d7ecf
--- /dev/null
+++ b/workspace.yml
@@ -0,0 +1,2 @@
+load_from:
+  - python_package: popgetter


Test patch:
diff --git a/popgetter_tests/__init__.py b/popgetter_tests/__init__.py
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/popgetter_tests/__init__.py
@@ -0,0 +1,1 @@
+
diff --git a/popgetter_tests/be.py b/popgetter_tests/be.py
new file mode 100644
index 0000000..b92837b
--- /dev/null
+++ b/popgetter_tests/be.py
@@ -0,0 +1,51 @@
+from popgetter.assets import be
+import matplotlib.pyplot as plt
+import geopandas as gpd
+
+from dagster import (
+    build_asset_context,
+)
+import pytest
+
+
+
+@pytest.fixture(scope="module")
+def demo_sectors() -> gpd.GeoDataFrame:
+    return gpd.read_file("popgetter_tests/demo_data/be_demo_sector.geojson")
+
+
+def test_get_geometries():
+    # Test the that the row count is correctly added to the metadata
+    context = build_asset_context()
+
+    # Check that the metadata is empty initially
+    assert (
+        (context.get_output_metadata(output_name="result") is None) |
+        (context.get_output_metadata(output_name="result") == {})
+    )
+
+    # # Get the geometries
+    stat_sectors = be.get_geometries(context)
+
+    expected_sector_row_count = 19795
+
+    # Now check that the metadata has been updated
+    metadata = context.get_output_metadata(output_name="result")
+    assert len(stat_sectors) == expected_sector_row_count
+    assert metadata["num_records"] == expected_sector_row_count
+
+def test_aggregate_sectors_to_municipalities(demo_sectors):
+    # Test the that the row count is correctly added to the metadata
+    context = build_asset_context()
+
+    actual_munis = be.aggregate_sectors_to_municipalities(context, demo_sectors)
+
+    expected_sector_row_count = 7
+    expected_munis_row_count = 3
+
+    assert len(demo_sectors) == expected_sector_row_count
+    assert len(actual_munis) == expected_munis_row_count
+    metadata = context.get_output_metadata(output_name="result")
+    assert metadata["num_records"] == expected_munis_row_count
+
+
diff --git a/popgetter_tests/demo_data/be_demo_sector.geojson b/popgetter_tests/demo_data/be_demo_sector.geojson
new file mode 100644
index 0000000..140fa95
--- /dev/null
+++ b/popgetter_tests/demo_data/be_demo_sector.geojson
@@ -0,0 +1,14 @@
+{
+"type": "FeatureCollection",
+"name": "be_demo_sector",
+"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::3812" } },
+"features": [
+{ "type": "Feature", "properties": { "fid": 7, "ogc_fid": 4853, "ogc_fid0": 4853, "cd_sector": "25072A29-", "tx_sector_descr_nl": "BOIS DE NIVELLES", "tx_sector_descr_fr": "BOIS DE NIVELLES", "tx_sector_descr_de": "BOIS DE NIVELLES", "cd_sub_munty": "25072A", "tx_sub_munty_nl": "NIVELLES", "tx_sub_munty_fr": "NIVELLES", "tx_munty_dstr": null, "cd_munty_refnis": "25072", "tx_munty_descr_nl": "Nijvel", "tx_munty_descr_fr": "Nivelles", "tx_munty_descr_de": "Nivelles", "cd_dstr_refnis": "25000", "tx_adm_dstr_descr_nl": "Arrondissement Nijvel", "tx_adm_dstr_descr_fr": "Arrondissement de Nivelles", "tx_adm_dstr_descr_de": "Bezirk Nivelles", "cd_prov_refnis": "20002", "tx_prov_descr_nl": "Provincie Waals-Brabant", "tx_prov_descr_fr": "Province du Brabant wallon", "tx_prov_descr_de": "Provinz Wallonisch-Brabant", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE31", "cd_nuts_lvl3": "BE310", "ms_area_ha": 917.26843869499987, "ms_perimeter_m": 21689.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 651141.186800003051758, 641102.732299998402596, 0.0 ], [ 651128.437700003385544, 641049.016100000590086, 0.0 ], [ 651135.964599996805191, 640992.079599998891354, 0.0 ], [ 651139.158600002527237, 640968.197799999266863, 0.0 ], [ 651141.699500001966953, 640949.200100000947714, 0.0 ], [ 651144.480499997735023, 640927.220300000160933, 0.0 ], [ 651145.456399999558926, 640850.486000001430511, 0.0 ], [ 651155.844200000166893, 640797.975499998778105, 0.0 ], [ 651159.102300003170967, 640783.038600001484156, 0.0 ], [ 651176.706200003623962, 640715.407200001180172, 0.0 ], [ 651151.553900003433228, 640624.031199999153614, 0.0 ], [ 651127.489600002765656, 640554.808899998664856, 0.0 ], [ 651123.230599999427795, 640542.564899999648333, 0.0 ], [ 651123.284599997103214, 640537.879000000655651, 0.0 ], [ 651124.153499998152256, 640461.400800000876188, 0.0 ], [ 651153.758500002324581, 640380.470499999821186, 0.0 ], [ 651117.362400002777576, 640361.995700001716614, 0.0 ], [ 651069.329199999570847, 640276.509500000625849, 0.0 ], [ 651038.247100003063679, 640245.172800000756979, 0.0 ], [ 650993.191799998283386, 640176.471500001847744, 0.0 ], [ 650966.923699997365475, 640139.32490000128746, 0.0 ], [ 650933.334600001573563, 640094.604299999773502, 0.0 ], [ 650866.9121999964118, 640069.368700001388788, 0.0 ], [ 650874.185199998319149, 639977.192499998956919, 0.0 ], [ 650879.081200003623962, 639945.197799999266863, 0.0 ], [ 650873.173199996352196, 639922.548000000417233, 0.0 ], [ 650818.977899998426437, 639889.661400001496077, 0.0 ], [ 650793.614799998700619, 639866.539700001478195, 0.0 ], [ 650744.933700002729893, 639822.455099999904633, 0.0 ], [ 650719.352700002491474, 639794.75620000064373, 0.0 ], [ 650681.433799996972084, 639749.558600001037121, 0.0 ], [ 650697.730099998414516, 639709.847600001841784, 0.0 ], [ 650712.055500000715256, 639628.190999999642372, 0.0 ], [ 650724.226000003516674, 639563.014199998229742, 0.0 ], [ 650760.884499996900558, 639499.385400000959635, 0.0 ], [ 650813.695299997925758, 639408.051600001752377, 0.0 ], [ 650919.368400000035763, 639290.375799998641014, 0.0 ], [ 650962.951800003647804, 639258.252900000661612, 0.0 ], [ 650890.893899999558926, 639170.215399999171495, 0.0 ], [ 650890.763899996876717, 639169.955400001257658, 0.0 ], [ 650859.592100001871586, 639103.96169999986887, 0.0 ], [ 650856.232100002467632, 639097.741799999028444, 0.0 ], [ 650856.142099998891354, 639097.581799998879433, 0.0 ], [ 650823.800200000405312, 639037.668099999427795, 0.0 ], [ 650816.621299996972084, 639023.317200001329184, 0.0 ], [ 650804.764399997889996, 638998.326299998909235, 0.0 ], [ 650792.08839999884367, 638968.354499999433756, 0.0 ], [ 650777.433499999344349, 638929.473600000143051, 0.0 ], [ 650764.253600001335144, 638901.687800001353025, 0.0 ], [ 650763.686599999666214, 638900.491799999028444, 0.0 ], [ 650743.239600002765656, 638873.609900001436472, 0.0 ], [ 650701.234499998390675, 638835.195199999958277, 0.0 ], [ 650700.255599997937679, 638834.295200001448393, 0.0 ], [ 650608.995399996638298, 638753.294700000435114, 0.0 ], [ 650601.420299999415874, 638745.755699999630451, 0.0 ], [ 650601.056400001049042, 638745.393800001591444, 0.0 ], [ 650593.567299999296665, 638739.79280000180006, 0.0 ], [ 650593.148299999535084, 638732.642900001257658, 0.0 ], [ 650581.4983000010252, 638731.151900000870228, 0.0 ], [ 650543.255999997258186, 638755.246800001710653, 0.0 ], [ 650496.412500001490116, 638781.830800000578165, 0.0 ], [ 650492.502400003373623, 638784.050799999386072, 0.0 ], [ 650451.750100001692772, 638807.545800000429153, 0.0 ], [ 650444.359999999403954, 638807.464800000190735, 0.0 ], [ 650292.828599996864796, 638916.565799999982119, 0.0 ], [ 650284.997500002384186, 638926.294799998402596, 0.0 ], [ 650269.869499996304512, 638910.70380000025034, 0.0 ], [ 650248.862499997019768, 638886.651000000536442, 0.0 ], [ 650235.174500003457069, 638874.71000000089407, 0.0 ], [ 650219.986400000751019, 638858.508200000971556, 0.0 ], [ 650213.216399997472763, 638858.447200000286102, 0.0 ], [ 650209.766400001943111, 638853.987199999392033, 0.0 ], [ 650199.598399996757507, 638840.335299998521805, 0.0 ], [ 650187.670400001108646, 638824.914299998432398, 0.0 ], [ 650164.003300003707409, 638799.761500000953674, 0.0 ], [ 650131.026299998164177, 638777.887699998915195, 0.0 ], [ 650116.49719999730587, 638771.705800000578165, 0.0 ], [ 650103.325900003314018, 638822.067699998617172, 0.0 ], [ 650094.136699996888638, 638857.202599998563528, 0.0 ], [ 650085.985600002110004, 638867.621599998325109, 0.0 ], [ 650083.015600003302097, 638871.151599999517202, 0.0 ], [ 650082.676600001752377, 638871.9386, 0.0 ], [ 650075.083499997854233, 638889.550500001758337, 0.0 ], [ 650042.16610000282526, 638952.525499999523163, 0.0 ], [ 650012.622699998319149, 638986.82149999961257, 0.0 ], [ 649974.718400001525879, 639023.816599998623133, 0.0 ], [ 649938.706500001251698, 638958.142900001257658, 0.0 ], [ 649922.118500001728535, 638936.571100000292063, 0.0 ], [ 649911.290500000119209, 638922.620200000703335, 0.0 ], [ 649859.873099997639656, 638939.170400001108646, 0.0 ], [ 649856.229099996387959, 638940.343400001525879, 0.0 ], [ 649779.84179999679327, 638920.913899999111891, 0.0 ], [ 649738.403800003230572, 638907.609299998730421, 0.0 ], [ 649714.976700000464916, 638884.246500000357628, 0.0 ], [ 649714.027699999511242, 638876.356499999761581, 0.0 ], [ 649716.860799998044968, 638850.087699998170137, 0.0 ], [ 649714.10080000013113, 638852.797600001096725, 0.0 ], [ 649705.5996999964118, 638861.415600001811981, 0.0 ], [ 649689.43860000371933, 638872.1537000015378, 0.0 ], [ 649674.927599996328354, 638879.041799999773502, 0.0 ], [ 649660.406400002539158, 638887.370799999684095, 0.0 ], [ 649616.884099997580051, 638917.855099998414516, 0.0 ], [ 649577.279899999499321, 638953.410199999809265, 0.0 ], [ 649559.587700001895428, 638973.668299999088049, 0.0 ], [ 649547.906700000166893, 638985.05629999935627, 0.0 ], [ 649540.755599997937679, 638990.225299999117851, 0.0 ], [ 649533.855599999427795, 638993.604400001466274, 0.0 ], [ 649532.865500003099442, 638993.984400000423193, 0.0 ], [ 649525.805500000715256, 638994.353399999439716, 0.0 ], [ 649490.226400002837181, 638987.329700000584126, 0.0 ], [ 649483.756300002336502, 638985.598799999803305, 0.0 ], [ 649475.537299998104572, 638984.657800000160933, 0.0 ], [ 649462.947300001978874, 638983.045899998396635, 0.0 ], [ 649462.210299998521805, 638984.2179000005126, 0.0 ], [ 649439.153099998831749, 639020.853000000119209, 0.0 ], [ 649435.531000003218651, 639037.80290000140667, 0.0 ], [ 649434.060999996960163, 639038.911899998784065, 0.0 ], [ 649418.955799996852875, 639078.379900000989437, 0.0 ], [ 649411.564699999988079, 639091.888900000602007, 0.0 ], [ 649401.992600001394749, 639109.607900001108646, 0.0 ], [ 649310.580200001597404, 639136.086500000208616, 0.0 ], [ 649294.32209999859333, 639123.614700000733137, 0.0 ], [ 649286.821999996900558, 639119.464699998497963, 0.0 ], [ 649258.625, 639098.350999999791384, 0.0 ], [ 649249.745999999344349, 639087.930100001394749, 0.0 ], [ 649225.509999997913837, 639061.577399998903275, 0.0 ], [ 649204.239900000393391, 639063.884500000625849, 0.0 ], [ 649171.184900000691414, 639022.210799999535084, 0.0 ], [ 649157.946900002658367, 639005.070000000298023, 0.0 ], [ 649137.439900003373623, 638978.967300001531839, 0.0 ], [ 649178.618299998342991, 638912.383099999278784, 0.0 ], [ 649191.200400002300739, 638891.295200001448393, 0.0 ], [ 649203.236900001764297, 638750.657400000840425, 0.0 ], [ 649224.848999999463558, 638728.180399999022484, 0.0 ], [ 649250.709100000560284, 638729.363200001418591, 0.0 ], [ 649296.479400001466274, 638724.958999998867512, 0.0 ], [ 649293.258599996566772, 638641.309099998325109, 0.0 ], [ 649291.721699997782707, 638614.369300000369549, 0.0 ], [ 649284.365800000727177, 638580.948500000056811, 0.0 ], [ 649279.547499999403954, 638571.438000001013279, 0.0 ], [ 649247.550800003111362, 638508.282000001519918, 0.0 ], [ 649223.391800001263618, 638466.295200001448393, 0.0 ], [ 649196.691799998283386, 638417.469500001519918, 0.0 ], [ 649188.564900003373623, 638385.750700000673532, 0.0 ], [ 649145.507600001990795, 638401.160000000149012, 0.0 ], [ 649133.069600000977516, 638409.032000001519918, 0.0 ], [ 648993.954700000584126, 638449.8597999997437, 0.0 ], [ 648952.293499998748302, 638446.81810000166297, 0.0 ], [ 648916.325300000607967, 638459.525299999862909, 0.0 ], [ 648877.966099999845028, 638465.494600001722574, 0.0 ], [ 648864.906000003218651, 638465.246599998325109, 0.0 ], [ 648846.905000001192093, 638460.329799998551607, 0.0 ], [ 648827.801899999380112, 638451.80290000140667, 0.0 ], [ 648781.808700002729893, 638437.953299999237061, 0.0 ], [ 648765.036700002849102, 638427.236400000751019, 0.0 ], [ 648752.953599996864796, 638417.117600001394749, 0.0 ], [ 648748.85360000282526, 638412.782600000500679, 0.0 ], [ 648742.370600000023842, 638405.929699998348951, 0.0 ], [ 648691.369499996304512, 638353.149099998176098, 0.0 ], [ 648618.286300003528595, 638250.511900000274181, 0.0 ], [ 648566.358199998736382, 638211.52140000090003, 0.0 ], [ 648536.163099996745586, 638189.27760000154376, 0.0 ], [ 648505.728200003504753, 638166.883799999952316, 0.0 ], [ 648463.420299999415874, 638135.730099998414516, 0.0 ], [ 648434.250799998641014, 638087.925299998372793, 0.0 ], [ 648387.946699999272823, 638068.504700001329184, 0.0 ], [ 648371.054799996316433, 638059.737799998372793, 0.0 ], [ 648339.122699998319149, 638054.153999999165535, 0.0 ], [ 648334.091700002551079, 638048.795099999755621, 0.0 ], [ 648323.443499997258186, 638062.627099998295307, 0.0 ], [ 648280.038599997758865, 638037.795400001108646, 0.0 ], [ 648273.089500002563, 638039.717500001192093, 0.0 ], [ 648224.535300001502037, 638030.036800000816584, 0.0 ], [ 648179.08219999819994, 638015.035100001841784, 0.0 ], [ 648112.487099997699261, 637993.518500000238419, 0.0 ], [ 648091.043999999761581, 637985.421599999070168, 0.0 ], [ 648127.886600002646446, 637950.336399998515844, 0.0 ], [ 648176.790500000119209, 637906.312199998646975, 0.0 ], [ 648191.946699999272823, 637891.495099999010563, 0.0 ], [ 648211.920199997723103, 637864.695000000298023, 0.0 ], [ 648248.67400000244379, 637821.803700000047684, 0.0 ], [ 648284.297899998724461, 637768.146600000560284, 0.0 ], [ 648285.41889999806881, 637766.499600000679493, 0.0 ], [ 648294.786100000143051, 637752.744500000029802, 0.0 ], [ 648302.081299997866154, 637741.869500000029802, 0.0 ], [ 648308.6283999979496, 637733.54839999973774, 0.0 ], [ 648320.440700002014637, 637721.522399999201298, 0.0 ], [ 648329.536799997091293, 637712.657400000840425, 0.0 ], [ 648329.698899999260902, 637710.575300000607967, 0.0 ], [ 648330.395999997854233, 637701.628400001674891, 0.0 ], [ 648270.186700001358986, 637612.557799998670816, 0.0 ], [ 648294.833999998867512, 637553.738600000739098, 0.0 ], [ 648167.92620000243187, 637477.909299999475479, 0.0 ], [ 648101.079300001263618, 637440.48369999974966, 0.0 ], [ 648070.274700000882149, 637404.281899999827147, 0.0 ], [ 648033.822599999606609, 637389.344000000506639, 0.0 ], [ 648027.659199997782707, 637346.758000001311302, 0.0 ], [ 648011.054099999368191, 637281.785100001841784, 0.0 ], [ 648004.893399998545647, 637263.776099998503923, 0.0 ], [ 647987.642700001597404, 637229.184099998325109, 0.0 ], [ 647985.07379999756813, 637224.680100001394749, 0.0 ], [ 647979.399899996817112, 637214.659099999815226, 0.0 ], [ 647961.515100002288818, 637188.859200000762939, 0.0 ], [ 647955.406199999153614, 637180.589200001209974, 0.0 ], [ 647930.389499999582767, 637147.938200000673532, 0.0 ], [ 647928.667400002479553, 637144.825300000607967, 0.0 ], [ 647927.040700003504753, 637139.502700001001358, 0.0 ], [ 647925.633699998259544, 637134.899300001561642, 0.0 ], [ 647889.048100002110004, 637145.508400000631809, 0.0 ], [ 647879.557099997997284, 637138.123500000685453, 0.0 ], [ 647836.116800002753735, 637127.699599999934435, 0.0 ], [ 647831.317900002002716, 637125.096599999815226, 0.0 ], [ 647840.3074000030756, 637092.958500001579523, 0.0 ], [ 647843.935699999332428, 637073.465500000864267, 0.0 ], [ 647832.091499999165535, 637022.441500000655651, 0.0 ], [ 647793.528200000524521, 637013.317600000649691, 0.0 ], [ 647755.369199998676777, 636994.472800001502037, 0.0 ], [ 647715.211900003254414, 636981.169899999978952, 0.0 ], [ 647644.43129999935627, 636975.456000000238419, 0.0 ], [ 647594.313699997961521, 636977.284200001507998, 0.0 ], [ 647586.90259999781847, 636979.049400001764297, 0.0 ], [ 647566.259300000965595, 636983.966299999505281, 0.0 ], [ 647499.880599997937679, 636992.031500000506639, 0.0 ], [ 647453.480200000107288, 636985.82660000026226, 0.0 ], [ 647408.258799999952316, 636977.773800000548363, 0.0 ], [ 647358.861599996685982, 636963.924899999052286, 0.0 ], [ 647348.504100002348423, 636993.231899999082088, 0.0 ], [ 647337.63849999755621, 637024.379000000655651, 0.0 ], [ 647322.743699997663498, 637070.547899998724461, 0.0 ], [ 647364.287600003182888, 637100.786800000816584, 0.0 ], [ 647365.020599998533726, 637105.124899998307228, 0.0 ], [ 647346.357699997723103, 637153.527899999171495, 0.0 ], [ 647328.456799998879433, 637204.200899999588728, 0.0 ], [ 647323.23650000244379, 637224.672899998724461, 0.0 ], [ 647303.881399996578693, 637217.76799999922514, 0.0 ], [ 647240.990500003099442, 637311.434099998325109, 0.0 ], [ 647233.889499999582767, 637309.856199998408556, 0.0 ], [ 647224.445500001311302, 637303.87220000103116, 0.0 ], [ 647212.810500003397465, 637293.113200001418591, 0.0 ], [ 647185.058499999344349, 637276.258400000631809, 0.0 ], [ 647170.099399998784065, 637271.034299999475479, 0.0 ], [ 647143.842299997806549, 637258.260400000959635, 0.0 ], [ 647139.113200001418591, 637257.635400000959635, 0.0 ], [ 647134.336199998855591, 637258.815400000661612, 0.0 ], [ 647133.487199999392033, 637259.025400001555681, 0.0 ], [ 647131.894199997186661, 637260.049400001764297, 0.0 ], [ 647128.355099998414516, 637261.719500001519918, 0.0 ], [ 647126.940099999308586, 637262.297400001436472, 0.0 ], [ 647121.342100001871586, 637262.168499998748302, 0.0 ], [ 647119.059000000357628, 637261.70549999922514, 0.0 ], [ 647118.905000001192093, 637261.927499998360872, 0.0 ], [ 647105.168600000441074, 637286.106499999761581, 0.0 ], [ 647096.492299996316433, 637302.13459999859333, 0.0 ], [ 647089.215000003576279, 637313.969500001519918, 0.0 ], [ 647082.933799996972084, 637326.392599999904633, 0.0 ], [ 647078.119599997997284, 637334.8614999987185, 0.0 ], [ 647072.992499999701977, 637343.778499998152256, 0.0 ], [ 647068.952399998903275, 637351.864599999040365, 0.0 ], [ 647065.808300003409386, 637357.204599998891354, 0.0 ], [ 647061.086099997162819, 637364.293600000441074, 0.0 ], [ 647057.608000002801418, 637368.956599999219179, 0.0 ], [ 647054.021899998188019, 637373.544599998742342, 0.0 ], [ 647047.0608000010252, 637383.78660000115633, 0.0 ], [ 647040.806500002741814, 637395.346700001507998, 0.0 ], [ 647037.625299997627735, 637403.805599998682737, 0.0 ], [ 647036.128200002014637, 637408.077599998563528, 0.0 ], [ 647035.425200000405312, 637417.96169999986887, 0.0 ], [ 647035.585100002586842, 637425.655600000172853, 0.0 ], [ 647036.456000000238419, 637429.513700000941753, 0.0 ], [ 647034.625799998641014, 637436.722600001841784, 0.0 ], [ 647034.817800000309944, 637441.467599999159575, 0.0 ], [ 647034.311700001358986, 637446.972699999809265, 0.0 ], [ 647034.488399997353554, 637468.966699998825788, 0.0 ], [ 647018.58389999717474, 637499.583700001239777, 0.0 ], [ 647004.353399999439716, 637526.372699998319149, 0.0 ], [ 646994.682099997997284, 637543.897700000554323, 0.0 ], [ 646991.587999999523163, 637548.16270000115037, 0.0 ], [ 646988.858999997377396, 637551.306699998676777, 0.0 ], [ 646983.767899997532368, 637556.608800001442432, 0.0 ], [ 646974.101599998772144, 637566.577799998223782, 0.0 ], [ 646957.088200002908707, 637583.941799998283386, 0.0 ], [ 646950.420999996364117, 637590.851799998432398, 0.0 ], [ 646935.312700003385544, 637607.121800001710653, 0.0 ], [ 646913.664300002157688, 637629.9189000017941, 0.0 ], [ 646930.002300001680851, 637638.705800000578165, 0.0 ], [ 646947.341399997472763, 637647.906800001859665, 0.0 ], [ 646967.931400001049042, 637658.638700000941753, 0.0 ], [ 646988.365500003099442, 637669.700599998235703, 0.0 ], [ 646999.850599996745586, 637676.313700001686811, 0.0 ], [ 647014.43860000371933, 637685.784600000828505, 0.0 ], [ 647022.0675999969244, 637691.003600001335144, 0.0 ], [ 647031.483599998056889, 637698.088500000536442, 0.0 ], [ 647040.421599999070168, 637704.226500000804663, 0.0 ], [ 647044.633699998259544, 637706.848400000482798, 0.0 ], [ 647048.989600002765656, 637709.176399998366833, 0.0 ], [ 647056.158699996769428, 637712.097500000149012, 0.0 ], [ 647059.829800002276897, 637713.333399999886751, 0.0 ], [ 647064.979699999094009, 637714.803399998694658, 0.0 ], [ 647070.208800002932549, 637716.016399998217821, 0.0 ], [ 647081.624799996614456, 637718.19539999961853, 0.0 ], [ 647094.012999996542931, 637720.040300000458956, 0.0 ], [ 647108.7820999994874, 637722.453299999237061, 0.0 ], [ 647121.825099997222424, 637724.506299998611212, 0.0 ], [ 647133.137199997901917, 637726.213199999183416, 0.0 ], [ 647226.677799999713898, 637737.583000000566244, 0.0 ], [ 647233.774899996817112, 637740.973999999463558, 0.0 ], [ 647308.176399998366833, 637753.762899998575449, 0.0 ], [ 647344.226199999451637, 637798.400699999183416, 0.0 ], [ 647397.557199999690056, 637855.617499999701977, 0.0 ], [ 647391.5878000035882, 637883.317499998956919, 0.0 ], [ 647394.13459999859333, 637910.635499998927116, 0.0 ], [ 647392.787299998104572, 637938.209399998188019, 0.0 ], [ 647372.033600002527237, 637991.159400001168251, 0.0 ], [ 647377.398000001907349, 638062.082299999892712, 0.0 ], [ 647398.069099999964237, 638074.766199998557568, 0.0 ], [ 647403.464100003242493, 638077.771200001239777, 0.0 ], [ 647404.769000001251698, 638079.658300001174212, 0.0 ], [ 647412.905100002884865, 638087.776200000196695, 0.0 ], [ 647417.016000002622604, 638092.917199999094009, 0.0 ], [ 647420.189999997615814, 638099.158100001513958, 0.0 ], [ 647422.233900003135204, 638107.272100001573563, 0.0 ], [ 647423.145900003612041, 638114.579199999570847, 0.0 ], [ 647423.371799997985363, 638123.386100001633167, 0.0 ], [ 647424.312700003385544, 638135.703099999576807, 0.0 ], [ 647425.32769999653101, 638140.832100000232458, 0.0 ], [ 647426.030699998140335, 638143.341099999845028, 0.0 ], [ 647428.409599997103214, 638149.018100000917912, 0.0 ], [ 647431.119499996304512, 638154.980099998414516, 0.0 ], [ 647438.571400001645088, 638171.362100001424551, 0.0 ], [ 647452.358400002121925, 638202.897900000214577, 0.0 ], [ 647477.421499997377396, 638264.094700001180172, 0.0 ], [ 647483.027500003576279, 638273.089600000530481, 0.0 ], [ 647562.043099999427795, 638263.385600000619888, 0.0 ], [ 647604.95440000295639, 638267.118500001728535, 0.0 ], [ 647581.688199996948242, 638348.979299999773502, 0.0 ], [ 647572.089100003242493, 638379.5912000015378, 0.0 ], [ 647563.277000002563, 638387.722199998795986, 0.0 ], [ 647546.98589999973774, 638436.118000000715256, 0.0 ], [ 647536.460900001227856, 638457.197900000959635, 0.0 ], [ 647533.347800001502037, 638461.218899998813868, 0.0 ], [ 647529.215800002217293, 638465.023899998515844, 0.0 ], [ 647492.832599997520447, 638492.568799998611212, 0.0 ], [ 647445.452299997210503, 638525.504799999296665, 0.0 ], [ 647419.220100000500679, 638544.768699999898672, 0.0 ], [ 647397.469999998807907, 638572.064699999988079, 0.0 ], [ 647393.130999997258186, 638577.444699998944998, 0.0 ], [ 647386.317900002002716, 638586.808699999004602, 0.0 ], [ 647381.883900001645088, 638600.7195999994874, 0.0 ], [ 647379.53490000218153, 638617.840500000864267, 0.0 ], [ 647379.889799997210503, 638638.4864999987185, 0.0 ], [ 647379.888899996876717, 638651.253400001674891, 0.0 ], [ 647382.746799997985363, 638664.850299999117851, 0.0 ], [ 647380.888899996876717, 638674.089299999177456, 0.0 ], [ 647379.35980000346899, 638682.024300001561642, 0.0 ], [ 647378.979800000786781, 638684.397300001233816, 0.0 ], [ 647380.340899996459484, 638689.746199999004602, 0.0 ], [ 647383.594899997115135, 638693.0912000015378, 0.0 ], [ 647395.214000001549721, 638694.683299999684095, 0.0 ], [ 647402.30290000140667, 638700.473200000822544, 0.0 ], [ 647425.888199999928474, 638735.564100001007318, 0.0 ], [ 647431.236199997365475, 638743.685100000351667, 0.0 ], [ 647446.492200002074242, 638770.085999999195337, 0.0 ], [ 647449.920199997723103, 638791.504799999296665, 0.0 ], [ 647433.540200002491474, 638787.932900000363588, 0.0 ], [ 647380.38289999961853, 638779.386900000274181, 0.0 ], [ 647355.240800000727177, 638806.671799998730421, 0.0 ], [ 647317.199500001966953, 638839.576699998229742, 0.0 ], [ 647315.588500000536442, 638842.496700000017881, 0.0 ], [ 647371.073899999260902, 638938.9983000010252, 0.0 ], [ 647366.569799996912479, 638973.49720000103116, 0.0 ], [ 647362.444799996912479, 638993.760200001299381, 0.0 ], [ 647360.565800003707409, 639002.995099999010563, 0.0 ], [ 647411.553999997675419, 639089.497699998319149, 0.0 ], [ 647435.790100000798702, 639105.989700000733137, 0.0 ], [ 647495.368400000035763, 639187.132399998605251, 0.0 ], [ 647509.746500000357628, 639204.603399999439716, 0.0 ], [ 647523.511500000953674, 639231.874299999326468, 0.0 ], [ 647562.266699999570847, 639263.126200001686811, 0.0 ], [ 647574.459799997508526, 639317.925999999046326, 0.0 ], [ 647603.335799999535084, 639347.687899999320507, 0.0 ], [ 647612.783900000154972, 639360.588899999856949, 0.0 ], [ 647634.088899999856949, 639389.668800000101328, 0.0 ], [ 647639.006999999284744, 639401.6097999997437, 0.0 ], [ 647657.901900000870228, 639447.540699999779463, 0.0 ], [ 647689.943000003695488, 639506.644600000232458, 0.0 ], [ 647693.980099998414516, 639529.503499999642372, 0.0 ], [ 647716.095200002193451, 639567.544399999082088, 0.0 ], [ 647662.657899998128414, 639646.56810000166297, 0.0 ], [ 647568.510499998927116, 639801.593400001525879, 0.0 ], [ 647369.947899997234344, 639844.170899998396635, 0.0 ], [ 647170.211300000548363, 639887.005699999630451, 0.0 ], [ 647170.350500002503395, 639888.090300001204014, 0.0 ], [ 647171.812799997627735, 639899.483800001442432, 0.0 ], [ 647178.041299998760223, 639948.015399999916553, 0.0 ], [ 647183.271799996495247, 639980.484499998390675, 0.0 ], [ 647189.545500002801418, 640043.312800001353025, 0.0 ], [ 647193.728200003504753, 640082.063000001013279, 0.0 ], [ 647193.707999996840954, 640251.702199999243021, 0.0 ], [ 647197.682599999010563, 640333.764600001275539, 0.0 ], [ 647200.602399997413158, 640352.061599999666214, 0.0 ], [ 647201.660800002515316, 640385.374099999666214, 0.0 ], [ 647203.750799998641014, 640417.655299998819828, 0.0 ], [ 647207.090400002896786, 640451.983600001782179, 0.0 ], [ 647216.348600000143051, 640513.530999999493361, 0.0 ], [ 647223.016699999570847, 640544.062699999660254, 0.0 ], [ 647232.481899999082088, 640573.844999998807907, 0.0 ], [ 647242.414800003170967, 640611.267700001597404, 0.0 ], [ 647253.113799996674061, 640645.878100000321865, 0.0 ], [ 647263.078500002622604, 640678.972800001502037, 0.0 ], [ 647270.730700001120567, 640712.567099999636412, 0.0 ], [ 647280.504299998283386, 640775.395899999886751, 0.0 ], [ 647272.215499997138977, 640840.050599999725819, 0.0 ], [ 647318.024300001561642, 640868.852800000458956, 0.0 ], [ 647344.084299996495247, 640886.77760000154376, 0.0 ], [ 647378.9712999984622, 640914.922099999967031, 0.0 ], [ 647421.91950000077486, 640953.520700000226498, 0.0 ], [ 647465.14919999986887, 640989.837999999523163, 0.0 ], [ 647511.707599997520447, 641020.843299999833107, 0.0 ], [ 647554.001500003039837, 641044.19200000166893, 0.0 ], [ 647601.091700002551079, 641069.587999999523163, 0.0 ], [ 647658.837499998509884, 641100.641600001603365, 0.0 ], [ 647710.271899998188019, 641124.303700000047684, 0.0 ], [ 647761.206200003623962, 641146.684599999338388, 0.0 ], [ 647808.859899997711182, 641165.986999999731779, 0.0 ], [ 647860.044200003147125, 641188.367899999022484, 0.0 ], [ 647892.463699996471405, 641205.559200000017881, 0.0 ], [ 647927.914300002157688, 641224.563299998641014, 0.0 ], [ 647970.208099998533726, 641247.146099999547005, 0.0 ], [ 648010.252599999308586, 641265.150800000876188, 0.0 ], [ 648053.577899999916553, 641284.937199998646975, 0.0 ], [ 648095.153899997472763, 641300.660599999129772, 0.0 ], [ 648131.402199998497963, 641313.055399999022484, 0.0 ], [ 648179.587600000202656, 641328.295400001108646, 0.0 ], [ 648208.008100003004074, 641336.580200001597404, 0.0 ], [ 648250.179499998688698, 641337.819400001317263, 0.0 ], [ 648285.42790000140667, 641348.682900000363588, 0.0 ], [ 648319.426499999943189, 641358.015099998563528, 0.0 ], [ 648351.628200002014637, 641368.596999999135733, 0.0 ], [ 648403.844200000166893, 641388.181099999696016, 0.0 ], [ 648448.014899998903275, 641394.764499999582767, 0.0 ], [ 648505.388099998235703, 641405.740100000053644, 0.0 ], [ 648544.401900000870228, 641418.197599999606609, 0.0 ], [ 648561.54280000180006, 641414.590300001204014, 0.0 ], [ 648618.479000002145767, 641422.48759999871254, 0.0 ], [ 648697.977099999785423, 641433.497000001370907, 0.0 ], [ 648741.023400001227856, 641434.174100000411272, 0.0 ], [ 648838.866700001060963, 641431.638799998909235, 0.0 ], [ 648919.646600000560284, 641437.398400001227856, 0.0 ], [ 649004.738999999943189, 641443.189899999648333, 0.0 ], [ 649073.566100001335144, 641448.369800001382828, 0.0 ], [ 649120.049599997699261, 641450.906599998474121, 0.0 ], [ 649193.986400000751019, 641452.821699999272823, 0.0 ], [ 649253.938900001347065, 641454.656899999827147, 0.0 ], [ 649320.250399999320507, 641457.289799999445677, 0.0 ], [ 649326.938100002706051, 641456.11879999935627, 0.0 ], [ 649403.593299999833107, 641459.362300001084805, 0.0 ], [ 649383.938799999654293, 641446.063000001013279, 0.0 ], [ 649370.533600002527237, 641436.999099999666214, 0.0 ], [ 649336.239200003445148, 641419.026399999856949, 0.0 ], [ 649277.462600000202656, 641384.363499999046326, 0.0 ], [ 649272.244099996984005, 641382.237799998372793, 0.0 ], [ 649197.063400000333786, 641330.182300001382828, 0.0 ], [ 649264.448500000056811, 641240.722500000149012, 0.0 ], [ 649221.702299997210503, 641211.530000001192093, 0.0 ], [ 649227.864799998700619, 641159.703200001269579, 0.0 ], [ 649244.001599997282028, 641059.908900000154972, 0.0 ], [ 649215.394299998879433, 641044.515000000596046, 0.0 ], [ 649120.948299996554852, 640990.394799999892712, 0.0 ], [ 649024.375699996948242, 640951.008600000292063, 0.0 ], [ 648916.742600001394749, 640894.011799998581409, 0.0 ], [ 648928.371100001037121, 640863.841600000858307, 0.0 ], [ 648941.265299998223782, 640834.171599999070168, 0.0 ], [ 648963.4746999964118, 640778.877700001001358, 0.0 ], [ 648985.636399999260902, 640731.474500000476837, 0.0 ], [ 649010.393100000917912, 640673.915300000458956, 0.0 ], [ 649024.680200003087521, 640625.183200001716614, 0.0 ], [ 649038.153399996459484, 640585.35700000077486, 0.0 ], [ 649049.643700003623962, 640535.093100000172853, 0.0 ], [ 649063.148999996483326, 640489.423099998384714, 0.0 ], [ 649074.123400002717972, 640442.456199999898672, 0.0 ], [ 649094.365500003099442, 640375.99040000140667, 0.0 ], [ 649111.231299996376038, 640321.68019999936223, 0.0 ], [ 649186.742299996316433, 640354.61089999973774, 0.0 ], [ 649218.873800002038479, 640297.849599998444319, 0.0 ], [ 649249.287799999117851, 640230.666200000792742, 0.0 ], [ 649218.463200002908707, 640203.818900000303984, 0.0 ], [ 649188.138599999248981, 640176.206300001591444, 0.0 ], [ 649158.579499997198582, 640148.859200000762939, 0.0 ], [ 649158.346699997782707, 640136.953099999576807, 0.0 ], [ 649129.679899998009205, 640095.059200000017881, 0.0 ], [ 649179.169399999082088, 640048.893699999898672, 0.0 ], [ 649220.407200001180172, 640017.555100001394749, 0.0 ], [ 649231.955300003290176, 640006.009700000286102, 0.0 ], [ 649264.941200003027916, 639991.170000001788139, 0.0 ], [ 649334.224200002849102, 639971.381599999964237, 0.0 ], [ 649355.814099997282028, 640002.993299998342991, 0.0 ], [ 649360.501400001347065, 640005.05629999935627, 0.0 ], [ 649378.388999998569489, 640029.292599998414516, 0.0 ], [ 649398.616499997675419, 640085.810199998319149, 0.0 ], [ 649410.112700000405312, 640116.6239, 0.0 ], [ 649428.984099999070168, 640145.703899998217821, 0.0 ], [ 649457.591399997472763, 640161.097800001502037, 0.0 ], [ 649491.026399999856949, 640179.32039999961853, 0.0 ], [ 649536.085500001907349, 640205.481800001114607, 0.0 ], [ 649574.816500000655651, 640229.579999998211861, 0.0 ], [ 649609.7195999994874, 640254.662200000137091, 0.0 ], [ 649633.998400002717972, 640273.852299999445677, 0.0 ], [ 649721.81139999628067, 640131.988899998366833, 0.0 ], [ 649782.868900001049042, 640039.2939000017941, 0.0 ], [ 649823.583400003612041, 640071.017099998891354, 0.0 ], [ 649833.712300002574921, 640037.5185999982059, 0.0 ], [ 649912.077899999916553, 639980.74720000103116, 0.0 ], [ 649937.903899997472763, 639996.640799999237061, 0.0 ], [ 649946.887599997222424, 640002.501200001686811, 0.0 ], [ 649962.605599999427795, 640007.752999998629093, 0.0 ], [ 650020.334100000560284, 640052.290699999779463, 0.0 ], [ 650125.866200000047684, 640169.396200001239777, 0.0 ], [ 650176.999700002372265, 640225.480000000447035, 0.0 ], [ 650234.709600001573563, 640296.611299999058247, 0.0 ], [ 650374.884400002658367, 640523.423000000417233, 0.0 ], [ 650363.211900003254414, 640530.218600001186132, 0.0 ], [ 650296.550300002098083, 640580.522599998861551, 0.0 ], [ 650257.438000001013279, 640606.939500000327826, 0.0 ], [ 650290.910499997437, 640704.989700000733137, 0.0 ], [ 650305.998000003397465, 640755.287900000810623, 0.0 ], [ 650394.005000002682209, 640823.204100001603365, 0.0 ], [ 650454.356200002133846, 640886.070199999958277, 0.0 ], [ 650532.298299998044968, 640974.110100001096725, 0.0 ], [ 650647.053999997675419, 641049.154399998486042, 0.0 ], [ 650723.995099999010563, 641014.570099998265505, 0.0 ], [ 650766.245800003409386, 641005.887800000607967, 0.0 ], [ 650807.71509999781847, 640997.220800001174212, 0.0 ], [ 650842.62219999730587, 640989.100000001490116, 0.0 ], [ 650821.489500001072884, 641054.61259999871254, 0.0 ], [ 650845.080799996852875, 641072.849599998444319, 0.0 ], [ 650844.83049999922514, 641074.927799999713898, 0.0 ], [ 650880.169600002467632, 641111.962900001555681, 0.0 ], [ 650907.197599999606609, 641137.012699998915195, 0.0 ], [ 650935.491300001740456, 641162.828499998897314, 0.0 ], [ 650959.488300003111362, 641186.3310999982059, 0.0 ], [ 651002.031999997794628, 641209.929800000041723, 0.0 ], [ 651041.443199999630451, 641165.419300001114607, 0.0 ], [ 651073.022399999201298, 641154.391699999570847, 0.0 ], [ 651125.119499996304512, 641123.085799999535084, 0.0 ], [ 651126.229099996387959, 641121.679699998348951, 0.0 ], [ 651141.186800003051758, 641102.732299998402596, 0.0 ] ] ] ] } },
+{ "type": "Feature", "properties": { "fid": 14, "ogc_fid": 10358, "ogc_fid0": 10358, "cd_sector": "52055B091", "tx_sector_descr_nl": "OBAIX-HABITATIONS DISPERSEES", "tx_sector_descr_fr": "OBAIX-HABITATIONS DISPERSEES", "tx_sector_descr_de": "OBAIX-HABITATIONS DISPERSEES", "cd_sub_munty": "52055B", "tx_sub_munty_nl": "OBAIX", "tx_sub_munty_fr": "OBAIX", "tx_munty_dstr": null, "cd_munty_refnis": "52055", "tx_munty_descr_nl": "Pont-à-Celles", "tx_munty_descr_fr": "Pont-à-Celles", "tx_munty_descr_de": "Pont-à-Celles", "cd_dstr_refnis": "52000", "tx_adm_dstr_descr_nl": "Arrondissement Charleroi", "tx_adm_dstr_descr_fr": "Arrondissement de Charleroi", "tx_adm_dstr_descr_de": "Bezirk Charleroi", "cd_prov_refnis": "50000", "tx_prov_descr_nl": "Provincie Henegouwen", "tx_prov_descr_fr": "Province du Hainaut", "tx_prov_descr_de": "Provinz Hennegau", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE32", "cd_nuts_lvl3": "BE32B", "ms_area_ha": 304.421931755, "ms_perimeter_m": 7749.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 647927.040700003504753, 637139.502700001001358, 0.0 ], [ 647931.682899996638298, 637136.127900000661612, 0.0 ], [ 647932.55799999833107, 637134.877999998629093, 0.0 ], [ 647955.825300000607967, 637119.240299999713898, 0.0 ], [ 647980.545299999415874, 637107.665100000798702, 0.0 ], [ 648006.79619999974966, 637098.137099999934435, 0.0 ], [ 648061.845499999821186, 637075.268899999558926, 0.0 ], [ 648092.095100000500679, 637076.444299999624491, 0.0 ], [ 648135.1908999979496, 637054.527800001204014, 0.0 ], [ 648161.442299999296665, 637041.187199998646975, 0.0 ], [ 648184.412799999117851, 637025.533900000154972, 0.0 ], [ 648213.040799997746944, 636998.724899999797344, 0.0 ], [ 648251.340800002217293, 636968.901700001209974, 0.0 ], [ 648287.344099998474121, 636938.8125, 0.0 ], [ 648323.597300000488758, 636910.004599999636412, 0.0 ], [ 648351.943599998950958, 636886.992400001734495, 0.0 ], [ 648374.180399999022484, 636864.979600001126528, 0.0 ], [ 648416.059199996292591, 636830.609900001436472, 0.0 ], [ 648445.888700000941753, 636817.269900001585484, 0.0 ], [ 648476.717799998819828, 636805.992300000041723, 0.0 ], [ 648529.454000003635883, 636787.436299998313189, 0.0 ], [ 648550.909500002861023, 636766.939100001007318, 0.0 ], [ 648593.191600002348423, 636756.725400000810623, 0.0 ], [ 648633.645199999213219, 636750.574099998921156, 0.0 ], [ 648664.723999999463558, 636741.327799998223782, 0.0 ], [ 648703.773800000548363, 636715.067099999636412, 0.0 ], [ 648722.682300001382828, 636695.069499999284744, 0.0 ], [ 648777.795500002801418, 636659.482599999755621, 0.0 ], [ 648831.361000001430511, 636629.239199999719858, 0.0 ], [ 648859.659599997103214, 636614.36769999936223, 0.0 ], [ 648889.472999997437, 636603.84010000154376, 0.0 ], [ 648912.677699998021126, 636589.467999998480082, 0.0 ], [ 648946.633400000631809, 636564.706700000911951, 0.0 ], [ 649002.214400000870228, 636537.260299999266863, 0.0 ], [ 649034.17119999974966, 636505.123799998313189, 0.0 ], [ 649082.691200003027916, 636465.176699999719858, 0.0 ], [ 649129.929899998009205, 636425.495200000703335, 0.0 ], [ 649203.871100001037121, 636388.473000001162291, 0.0 ], [ 649286.267099998891354, 636338.030200000852346, 0.0 ], [ 649313.73759999871254, 636321.924199998378754, 0.0 ], [ 649308.366099998354912, 636292.611200001090765, 0.0 ], [ 649309.387599997222424, 636243.018100000917912, 0.0 ], [ 649392.283600002527237, 636192.809599999338388, 0.0 ], [ 649446.913000002503395, 636151.894600000232458, 0.0 ], [ 649505.652500003576279, 636104.870600000023842, 0.0 ], [ 649579.95610000193119, 636044.458200000226498, 0.0 ], [ 649643.523800000548363, 635996.200500000268221, 0.0 ], [ 649662.614399999380112, 635890.484900001436472, 0.0 ], [ 649671.170800000429153, 635809.908300001174212, 0.0 ], [ 649679.615900002419949, 635746.09739999845624, 0.0 ], [ 649691.468900002539158, 635666.286899998784065, 0.0 ], [ 649701.195100001990795, 635604.022999998182058, 0.0 ], [ 649718.078500002622604, 635532.36939999833703, 0.0 ], [ 649724.379900000989437, 635492.979800000786781, 0.0 ], [ 649730.010799996554852, 635442.887099999934435, 0.0 ], [ 649702.607299998402596, 635422.665199998766184, 0.0 ], [ 649657.284100003540516, 635385.050900001078844, 0.0 ], [ 649608.594400003552437, 635405.654100000858307, 0.0 ], [ 649559.154799997806549, 635428.038899999111891, 0.0 ], [ 649502.010300002992153, 635462.594200000166893, 0.0 ], [ 649458.881999999284744, 635493.151399999856949, 0.0 ], [ 649422.395300000905991, 635516.61540000140667, 0.0 ], [ 649373.439499996602535, 635542.312600001692772, 0.0 ], [ 649323.186499997973442, 635570.040800001472235, 0.0 ], [ 649233.415500000119209, 635622.232700001448393, 0.0 ], [ 649208.609099999070168, 635571.745900001376867, 0.0 ], [ 649216.10980000346899, 635565.309300001710653, 0.0 ], [ 649216.111000001430511, 635555.387499999254942, 0.0 ], [ 649224.051600001752377, 635529.591699998825788, 0.0 ], [ 649220.022200003266335, 635514.810100000351667, 0.0 ], [ 649217.507200002670288, 635507.981699999421835, 0.0 ], [ 649199.887999996542931, 635460.292599998414516, 0.0 ], [ 649184.362700000405312, 635412.134899999946356, 0.0 ], [ 649166.290500000119209, 635364.976700000464916, 0.0 ], [ 649155.120999999344349, 635344.772599998861551, 0.0 ], [ 649150.528200000524521, 635336.475099999457598, 0.0 ], [ 649132.798500001430511, 635299.395300000905991, 0.0 ], [ 649121.953500002622604, 635310.237700000405312, 0.0 ], [ 649119.531800001859665, 635308.0185999982059, 0.0 ], [ 649084.0608000010252, 635330.732999999076128, 0.0 ], [ 649059.709200002253056, 635267.277399998158216, 0.0 ], [ 649047.979999996721745, 635224.479600001126528, 0.0 ], [ 649044.157700002193451, 635174.854499999433756, 0.0 ], [ 649044.462099999189377, 635113.05799999833107, 0.0 ], [ 648988.275200001895428, 635110.473400000482798, 0.0 ], [ 648958.525600001215935, 635109.047800000756979, 0.0 ], [ 648925.979099996387959, 635109.137699998915195, 0.0 ], [ 648918.088200002908707, 634981.309599999338388, 0.0 ], [ 648885.698100000619888, 634977.930799998342991, 0.0 ], [ 648828.496200002729893, 634972.564599998295307, 0.0 ], [ 648761.903599999845028, 634966.619300000369549, 0.0 ], [ 648693.76410000026226, 634961.955099999904633, 0.0 ], [ 648649.7804000005126, 634958.934200000017881, 0.0 ], [ 648572.984499998390675, 634956.503100000321865, 0.0 ], [ 648503.313400000333786, 634953.604200001806021, 0.0 ], [ 648435.423600003123283, 634951.986699998378754, 0.0 ], [ 648361.939900003373623, 634950.837400000542402, 0.0 ], [ 648304.987800002098083, 634946.98679999995511, 0.0 ], [ 648243.191200003027916, 634947.698300000280142, 0.0 ], [ 648176.551100000739098, 634948.362100001424551, 0.0 ], [ 648118.817100003361702, 634948.839600000530481, 0.0 ], [ 648074.051600001752377, 634950.896899998188019, 0.0 ], [ 648023.410899996757507, 634955.218800000846386, 0.0 ], [ 647976.082299999892712, 634961.338100001215935, 0.0 ], [ 647912.972699999809265, 634969.158700000494719, 0.0 ], [ 647862.347800001502037, 634971.949499998241663, 0.0 ], [ 647854.769299998879433, 634974.807900000363588, 0.0 ], [ 647809.098200000822544, 634972.552499998360872, 0.0 ], [ 647790.611299999058247, 635125.502300001680851, 0.0 ], [ 647716.591399997472763, 635820.550200000405312, 0.0 ], [ 647684.342299997806549, 636078.2787000015378, 0.0 ], [ 647680.525200001895428, 636116.418600000441074, 0.0 ], [ 647674.987499997019768, 636171.573899999260902, 0.0 ], [ 647668.791799999773502, 636240.228799998760223, 0.0 ], [ 647661.000500001013279, 636325.149000000208616, 0.0 ], [ 647651.710100002586842, 636402.678599998354912, 0.0 ], [ 647639.744999997317791, 636503.848200000822544, 0.0 ], [ 647629.874600000679493, 636596.643100000917912, 0.0 ], [ 647625.479000002145767, 636639.0641999989748, 0.0 ], [ 647620.676700003445148, 636685.438200000673532, 0.0 ], [ 647589.5337999984622, 636968.447799999266863, 0.0 ], [ 647587.689999997615814, 636968.650600001215935, 0.0 ], [ 647587.549199998378754, 636970.510000001639128, 0.0 ], [ 647586.90259999781847, 636979.049400001764297, 0.0 ], [ 647594.313699997961521, 636977.284200001507998, 0.0 ], [ 647644.43129999935627, 636975.456000000238419, 0.0 ], [ 647715.211900003254414, 636981.169899999978952, 0.0 ], [ 647755.369199998676777, 636994.472800001502037, 0.0 ], [ 647793.528200000524521, 637013.317600000649691, 0.0 ], [ 647832.091499999165535, 637022.441500000655651, 0.0 ], [ 647843.935699999332428, 637073.465500000864267, 0.0 ], [ 647840.3074000030756, 637092.958500001579523, 0.0 ], [ 647831.317900002002716, 637125.096599999815226, 0.0 ], [ 647836.116800002753735, 637127.699599999934435, 0.0 ], [ 647879.557099997997284, 637138.123500000685453, 0.0 ], [ 647889.048100002110004, 637145.508400000631809, 0.0 ], [ 647925.633699998259544, 637134.899300001561642, 0.0 ], [ 647927.040700003504753, 637139.502700001001358, 0.0 ] ] ] ] } },
+{ "type": "Feature", "properties": { "fid": 15, "ogc_fid": 10359, "ogc_fid0": 10359, "cd_sector": "52055B10-", "tx_sector_descr_nl": "ROSSEIGNIES-CENTRE", "tx_sector_descr_fr": "ROSSEIGNIES-CENTRE", "tx_sector_descr_de": "ROSSEIGNIES-CENTRE", "cd_sub_munty": "52055B", "tx_sub_munty_nl": "OBAIX", "tx_sub_munty_fr": "OBAIX", "tx_munty_dstr": null, "cd_munty_refnis": "52055", "tx_munty_descr_nl": "Pont-à-Celles", "tx_munty_descr_fr": "Pont-à-Celles", "tx_munty_descr_de": "Pont-à-Celles", "cd_dstr_refnis": "52000", "tx_adm_dstr_descr_nl": "Arrondissement Charleroi", "tx_adm_dstr_descr_fr": "Arrondissement de Charleroi", "tx_adm_dstr_descr_de": "Bezirk Charleroi", "cd_prov_refnis": "50000", "tx_prov_descr_nl": "Provincie Henegouwen", "tx_prov_descr_fr": "Province du Hainaut", "tx_prov_descr_de": "Provinz Hennegau", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE32", "cd_nuts_lvl3": "BE32B", "ms_area_ha": 48.740658578099996, "ms_perimeter_m": 3847.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 647077.671800002455711, 636762.716499999165535, 0.0 ], [ 647094.64469999819994, 636727.187600001692772, 0.0 ], [ 647114.590499997138977, 636655.565600000321865, 0.0 ], [ 647134.05290000140667, 636577.584100000560284, 0.0 ], [ 647153.861000001430511, 636481.27479999884963, 0.0 ], [ 647257.141999997198582, 636475.693399999290705, 0.0 ], [ 647213.234899997711182, 636355.673500001430511, 0.0 ], [ 647185.368600003421307, 636284.5614, 0.0 ], [ 647158.98589999973774, 636219.824400000274181, 0.0 ], [ 647141.759300000965595, 636155.635400000959635, 0.0 ], [ 646994.058600001037121, 636144.445900000631809, 0.0 ], [ 646985.101599998772144, 636309.224899999797344, 0.0 ], [ 646819.776100002229214, 636297.7364999987185, 0.0 ], [ 646769.491200000047684, 636332.417599998414516, 0.0 ], [ 646703.941399998962879, 636362.003400001674891, 0.0 ], [ 646681.998400002717972, 636278.235800001770258, 0.0 ], [ 646587.119599997997284, 636316.505399998277426, 0.0 ], [ 646572.85419999808073, 636315.472500000149012, 0.0 ], [ 646598.219200000166893, 636397.94370000064373, 0.0 ], [ 646623.57209999859333, 636450.805700000375509, 0.0 ], [ 646646.316500000655651, 636496.276599999517202, 0.0 ], [ 646593.126000002026558, 636524.192099999636412, 0.0 ], [ 646485.744099996984005, 636589.272300001233816, 0.0 ], [ 646405.879199996590614, 636640.746800001710653, 0.0 ], [ 646303.29389999806881, 636708.405999999493361, 0.0 ], [ 646346.563400000333786, 636803.754000000655651, 0.0 ], [ 646429.878700003027916, 636774.4206000007689, 0.0 ], [ 646545.257100000977516, 636737.622000001370907, 0.0 ], [ 646603.122699998319149, 636812.690900001674891, 0.0 ], [ 646631.946599997580051, 636846.92850000038743, 0.0 ], [ 646603.008299998939037, 636986.939500000327826, 0.0 ], [ 646592.388300001621246, 637076.671900000423193, 0.0 ], [ 646735.680500000715256, 637106.141800001263618, 0.0 ], [ 646858.613499999046326, 637136.015599999576807, 0.0 ], [ 646887.049400001764297, 637146.597100000828505, 0.0 ], [ 646916.187200002372265, 637168.36600000038743, 0.0 ], [ 646965.572700001299381, 637208.043299999088049, 0.0 ], [ 647001.55349999666214, 637235.438000001013279, 0.0 ], [ 647041.423299998044968, 637145.349899999797344, 0.0 ], [ 647066.021200001239777, 637109.603100001811981, 0.0 ], [ 647088.540200002491474, 637079.715199999511242, 0.0 ], [ 646983.256099998950958, 636979.969300001859665, 0.0 ], [ 647031.378799997270107, 636865.507100000977516, 0.0 ], [ 647077.671800002455711, 636762.716499999165535, 0.0 ] ] ] ] } },
+{ "type": "Feature", "properties": { "fid": 16, "ogc_fid": 10360, "ogc_fid0": 10360, "cd_sector": "52055B19-", "tx_sector_descr_nl": "ROSSEIGNIES-HABITATIONS DISP.", "tx_sector_descr_fr": "ROSSEIGNIES-HABITATIONS DISP.", "tx_sector_descr_de": "ROSSEIGNIES-HABITATIONS DISP.", "cd_sub_munty": "52055B", "tx_sub_munty_nl": "OBAIX", "tx_sub_munty_fr": "OBAIX", "tx_munty_dstr": null, "cd_munty_refnis": "52055", "tx_munty_descr_nl": "Pont-à-Celles", "tx_munty_descr_fr": "Pont-à-Celles", "tx_munty_descr_de": "Pont-à-Celles", "cd_dstr_refnis": "52000", "tx_adm_dstr_descr_nl": "Arrondissement Charleroi", "tx_adm_dstr_descr_fr": "Arrondissement de Charleroi", "tx_adm_dstr_descr_de": "Bezirk Charleroi", "cd_prov_refnis": "50000", "tx_prov_descr_nl": "Provincie Henegouwen", "tx_prov_descr_fr": "Province du Hainaut", "tx_prov_descr_de": "Provinz Hennegau", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE32", "cd_nuts_lvl3": "BE32B", "ms_area_ha": 344.88080707299997, "ms_perimeter_m": 13292.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 646935.312700003385544, 637607.121800001710653, 0.0 ], [ 646950.420999996364117, 637590.851799998432398, 0.0 ], [ 646957.088200002908707, 637583.941799998283386, 0.0 ], [ 646974.101599998772144, 637566.577799998223782, 0.0 ], [ 646983.767899997532368, 637556.608800001442432, 0.0 ], [ 646988.858999997377396, 637551.306699998676777, 0.0 ], [ 646991.587999999523163, 637548.16270000115037, 0.0 ], [ 646994.682099997997284, 637543.897700000554323, 0.0 ], [ 647004.353399999439716, 637526.372699998319149, 0.0 ], [ 647018.58389999717474, 637499.583700001239777, 0.0 ], [ 647034.488399997353554, 637468.966699998825788, 0.0 ], [ 647034.311700001358986, 637446.972699999809265, 0.0 ], [ 647034.817800000309944, 637441.467599999159575, 0.0 ], [ 647034.625799998641014, 637436.722600001841784, 0.0 ], [ 647036.456000000238419, 637429.513700000941753, 0.0 ], [ 647035.585100002586842, 637425.655600000172853, 0.0 ], [ 647035.425200000405312, 637417.96169999986887, 0.0 ], [ 647036.128200002014637, 637408.077599998563528, 0.0 ], [ 647037.625299997627735, 637403.805599998682737, 0.0 ], [ 647040.806500002741814, 637395.346700001507998, 0.0 ], [ 647047.0608000010252, 637383.78660000115633, 0.0 ], [ 647054.021899998188019, 637373.544599998742342, 0.0 ], [ 647057.608000002801418, 637368.956599999219179, 0.0 ], [ 647061.086099997162819, 637364.293600000441074, 0.0 ], [ 647065.808300003409386, 637357.204599998891354, 0.0 ], [ 647068.952399998903275, 637351.864599999040365, 0.0 ], [ 647072.992499999701977, 637343.778499998152256, 0.0 ], [ 647078.119599997997284, 637334.8614999987185, 0.0 ], [ 647082.933799996972084, 637326.392599999904633, 0.0 ], [ 647089.215000003576279, 637313.969500001519918, 0.0 ], [ 647096.492299996316433, 637302.13459999859333, 0.0 ], [ 647105.168600000441074, 637286.106499999761581, 0.0 ], [ 647118.905000001192093, 637261.927499998360872, 0.0 ], [ 647119.059000000357628, 637261.70549999922514, 0.0 ], [ 647121.342100001871586, 637262.168499998748302, 0.0 ], [ 647126.940099999308586, 637262.297400001436472, 0.0 ], [ 647128.355099998414516, 637261.719500001519918, 0.0 ], [ 647131.894199997186661, 637260.049400001764297, 0.0 ], [ 647133.487199999392033, 637259.025400001555681, 0.0 ], [ 647134.336199998855591, 637258.815400000661612, 0.0 ], [ 647139.113200001418591, 637257.635400000959635, 0.0 ], [ 647143.842299997806549, 637258.260400000959635, 0.0 ], [ 647170.099399998784065, 637271.034299999475479, 0.0 ], [ 647185.058499999344349, 637276.258400000631809, 0.0 ], [ 647212.810500003397465, 637293.113200001418591, 0.0 ], [ 647224.445500001311302, 637303.87220000103116, 0.0 ], [ 647233.889499999582767, 637309.856199998408556, 0.0 ], [ 647240.990500003099442, 637311.434099998325109, 0.0 ], [ 647303.881399996578693, 637217.76799999922514, 0.0 ], [ 647323.23650000244379, 637224.672899998724461, 0.0 ], [ 647328.456799998879433, 637204.200899999588728, 0.0 ], [ 647346.357699997723103, 637153.527899999171495, 0.0 ], [ 647365.020599998533726, 637105.124899998307228, 0.0 ], [ 647364.287600003182888, 637100.786800000816584, 0.0 ], [ 647322.743699997663498, 637070.547899998724461, 0.0 ], [ 647337.63849999755621, 637024.379000000655651, 0.0 ], [ 647348.504100002348423, 636993.231899999082088, 0.0 ], [ 647358.861599996685982, 636963.924899999052286, 0.0 ], [ 647408.258799999952316, 636977.773800000548363, 0.0 ], [ 647453.480200000107288, 636985.82660000026226, 0.0 ], [ 647499.880599997937679, 636992.031500000506639, 0.0 ], [ 647566.259300000965595, 636983.966299999505281, 0.0 ], [ 647586.90259999781847, 636979.049400001764297, 0.0 ], [ 647587.549199998378754, 636970.510000001639128, 0.0 ], [ 647587.689999997615814, 636968.650600001215935, 0.0 ], [ 647589.5337999984622, 636968.447799999266863, 0.0 ], [ 647620.676700003445148, 636685.438200000673532, 0.0 ], [ 647625.479000002145767, 636639.0641999989748, 0.0 ], [ 647629.874600000679493, 636596.643100000917912, 0.0 ], [ 647639.744999997317791, 636503.848200000822544, 0.0 ], [ 647651.710100002586842, 636402.678599998354912, 0.0 ], [ 647661.000500001013279, 636325.149000000208616, 0.0 ], [ 647668.791799999773502, 636240.228799998760223, 0.0 ], [ 647674.987499997019768, 636171.573899999260902, 0.0 ], [ 647680.525200001895428, 636116.418600000441074, 0.0 ], [ 647684.342299997806549, 636078.2787000015378, 0.0 ], [ 647716.591399997472763, 635820.550200000405312, 0.0 ], [ 647790.611299999058247, 635125.502300001680851, 0.0 ], [ 647809.098200000822544, 634972.552499998360872, 0.0 ], [ 647802.254399999976158, 634972.223700001835823, 0.0 ], [ 647776.864200003445148, 634970.97069999948144, 0.0 ], [ 647753.723999999463558, 634969.077300000935793, 0.0 ], [ 647735.974200002849102, 634968.762600000947714, 0.0 ], [ 647698.317900002002716, 634970.086300000548363, 0.0 ], [ 647664.723999999463558, 634975.51969999819994, 0.0 ], [ 647620.910099998116493, 634989.029899999499321, 0.0 ], [ 647573.549500003457069, 635002.008600000292063, 0.0 ], [ 647540.939099997282028, 635013.285799998790026, 0.0 ], [ 647514.421999998390675, 635026.8918999992311, 0.0 ], [ 647481.82769999653101, 635033.8412000015378, 0.0 ], [ 647443.655599996447563, 635038.992800001055002, 0.0 ], [ 647399.140000000596046, 635041.815699998289347, 0.0 ], [ 647351.561700001358986, 635045.638000000268221, 0.0 ], [ 647286.686599999666214, 635050.66160000115633, 0.0 ], [ 647232.265100002288818, 635051.905099999159575, 0.0 ], [ 647188.765299998223782, 635053.21229999884963, 0.0 ], [ 647148.360299997031689, 635045.879599999636412, 0.0 ], [ 647085.612300001084805, 635033.3564000017941, 0.0 ], [ 647039.613499999046326, 635026.75730000063777, 0.0 ], [ 646999.941799998283386, 635026.815000001341105, 0.0 ], [ 646942.957599997520447, 635028.808200001716614, 0.0 ], [ 646876.051499999943189, 635032.284600000828505, 0.0 ], [ 646810.6925999969244, 635032.714400000870228, 0.0 ], [ 646746.599200002849102, 635035.690900001674891, 0.0 ], [ 646686.318099997937679, 635037.152499999850988, 0.0 ], [ 646637.49040000140667, 635037.412300001829863, 0.0 ], [ 646602.896999999880791, 635036.736400000751019, 0.0 ], [ 646558.928999997675419, 635032.949999999254942, 0.0 ], [ 646520.273299999535084, 635031.226599998772144, 0.0 ], [ 646474.492299996316433, 635032.767900001257658, 0.0 ], [ 646439.632799997925758, 635035.904399998486042, 0.0 ], [ 646402.976199999451637, 635042.071899998933077, 0.0 ], [ 646370.036899998784065, 635058.692899998277426, 0.0 ], [ 646368.490599997341633, 635054.567699998617172, 0.0 ], [ 646353.14580000191927, 635063.268800001591444, 0.0 ], [ 646345.972199998795986, 635067.336500000208616, 0.0 ], [ 646351.791500002145767, 635073.598600000143051, 0.0 ], [ 646353.452500000596046, 635078.997499998658895, 0.0 ], [ 646363.410499997437, 635089.719500001519918, 0.0 ], [ 646426.114100001752377, 635113.033300001174212, 0.0 ], [ 646468.989399999380112, 635152.423199999961071, 0.0 ], [ 646541.593999996781349, 635184.155900001525879, 0.0 ], [ 646580.320200003683567, 635239.49379999935627, 0.0 ], [ 646617.992499999701977, 635282.492600001394749, 0.0 ], [ 646629.399499997496605, 635293.125599998980761, 0.0 ], [ 646644.146700002253056, 635308.432500001043081, 0.0 ], [ 646658.4087999984622, 635325.360500000417233, 0.0 ], [ 646688.680900000035763, 635367.255399998277426, 0.0 ], [ 646719.155100002884865, 635411.073300000280142, 0.0 ], [ 646729.642200000584126, 635425.676300000399351, 0.0 ], [ 646747.188299998641014, 635445.547200001776218, 0.0 ], [ 646710.520900003612041, 635468.485399998724461, 0.0 ], [ 646698.040700003504753, 635475.454300001263618, 0.0 ], [ 646639.847999997437, 635504.436500001698732, 0.0 ], [ 646613.303700000047684, 635515.349599998444319, 0.0 ], [ 646595.323500000056811, 635521.07319999858737, 0.0 ], [ 646594.354400001466274, 635521.381700001657009, 0.0 ], [ 646584.472300000488758, 635527.435699999332428, 0.0 ], [ 646574.6570999994874, 635534.901700001209974, 0.0 ], [ 646524.511399999260902, 635585.775800000876188, 0.0 ], [ 646513.822300001978874, 635593.1689000017941, 0.0 ], [ 646497.314099997282028, 635600.368999999016523, 0.0 ], [ 646465.395599998533726, 635611.179099999368191, 0.0 ], [ 646439.133299998939037, 635620.414200000464916, 0.0 ], [ 646417.675999999046326, 635628.691300000995398, 0.0 ], [ 646407.601899996399879, 635635.366300001740456, 0.0 ], [ 646384.930600002408028, 635654.944299999624491, 0.0 ], [ 646338.550899997353554, 635695.246500000357628, 0.0 ], [ 646308.829499997198582, 635718.475600000470877, 0.0 ], [ 646290.422200001776218, 635730.236699998378754, 0.0 ], [ 646270.869000002741814, 635739.557700000703335, 0.0 ], [ 646260.309799998998642, 635746.189699999988079, 0.0 ], [ 646221.493299998342991, 635773.862799998372793, 0.0 ], [ 646176.383699998259544, 635807.691899999976158, 0.0 ], [ 646153.697400003671646, 635826.238000001758337, 0.0 ], [ 646131.028099998831749, 635845.903000000864267, 0.0 ], [ 646107.016800001263618, 635863.99210000038147, 0.0 ], [ 646079.111400000751019, 635884.851199999451637, 0.0 ], [ 646066.088299997150898, 635896.229299999773502, 0.0 ], [ 646048.601899996399879, 635916.965300001204014, 0.0 ], [ 646027.200699999928474, 635943.368400000035763, 0.0 ], [ 646010.820299997925758, 635969.109400000423193, 0.0 ], [ 645996.933899998664856, 635995.496399998664856, 0.0 ], [ 645974.8412000015378, 636040.897399999201298, 0.0 ], [ 645954.495399996638298, 636089.4364, 0.0 ], [ 645935.865800000727177, 636133.787500001490116, 0.0 ], [ 645922.706500001251698, 636162.469500001519918, 0.0 ], [ 645908.316200003027916, 636184.510499998927116, 0.0 ], [ 645882.186800003051758, 636216.747400000691414, 0.0 ], [ 645846.821299999952316, 636254.38740000128746, 0.0 ], [ 645835.000200003385544, 636270.033399999141693, 0.0 ], [ 645803.718699999153614, 636314.366300001740456, 0.0 ], [ 645784.385399997234344, 636345.3733000010252, 0.0 ], [ 645757.162399999797344, 636329.334399998188019, 0.0 ], [ 645700.980800002813339, 636291.502399999648333, 0.0 ], [ 645670.835199996829033, 636342.000399999320507, 0.0 ], [ 645660.96509999781847, 636359.543400000780821, 0.0 ], [ 645655.573899999260902, 636371.615299999713898, 0.0 ], [ 645653.200800001621246, 636385.353300001472235, 0.0 ], [ 645653.017599999904633, 636401.6554000005126, 0.0 ], [ 645657.523299999535084, 636438.881299998611212, 0.0 ], [ 645669.223499998450279, 636516.441199999302626, 0.0 ], [ 645676.214199997484684, 636556.433200001716614, 0.0 ], [ 645681.237899996340275, 636584.819200001657009, 0.0 ], [ 645683.388599999248981, 636614.067099999636412, 0.0 ], [ 645683.933399997651577, 636640.184999998658895, 0.0 ], [ 645685.718000002205372, 636672.317999999970198, 0.0 ], [ 645688.695600003004074, 636715.24100000038743, 0.0 ], [ 645694.106299996376038, 636742.598900001496077, 0.0 ], [ 645700.449199996888638, 636758.83500000089407, 0.0 ], [ 645707.247000001370907, 636774.249899998307228, 0.0 ], [ 645739.0033999979496, 636831.40989999845624, 0.0 ], [ 645764.520999997854233, 636870.750799998641014, 0.0 ], [ 645802.733400002121925, 636926.734700001776218, 0.0 ], [ 645820.723099999129772, 636953.384700000286102, 0.0 ], [ 645828.644900001585484, 636967.749600000679493, 0.0 ], [ 645834.016800001263618, 636984.520700000226498, 0.0 ], [ 645832.14639999717474, 637022.497600000351667, 0.0 ], [ 645818.548900000751019, 637069.700500000268221, 0.0 ], [ 645802.586300000548363, 637130.156500000506639, 0.0 ], [ 645791.806699998676777, 637182.616399999707937, 0.0 ], [ 645789.615599997341633, 637196.962400000542402, 0.0 ], [ 645783.958400003612041, 637218.556400001049042, 0.0 ], [ 645776.701200000941753, 637239.631400000303984, 0.0 ], [ 645753.761799998581409, 637290.475299999117851, 0.0 ], [ 645751.026500001549721, 637313.582299999892712, 0.0 ], [ 645752.261200003325939, 637347.430300001055002, 0.0 ], [ 645754.92790000140667, 637372.615299999713898, 0.0 ], [ 645751.624799996614456, 637389.805300001055002, 0.0 ], [ 645749.506599999964237, 637394.208299998193979, 0.0 ], [ 645752.149700000882149, 637395.519299998879433, 0.0 ], [ 645785.931400001049042, 637412.280200000852346, 0.0 ], [ 645786.636399999260902, 637412.630300000309944, 0.0 ], [ 645789.17230000346899, 637421.105200000107288, 0.0 ], [ 645786.384300000965595, 637425.962200000882149, 0.0 ], [ 645782.781300000846386, 637428.333200000226498, 0.0 ], [ 645778.672200001776218, 637430.027199998497963, 0.0 ], [ 645773.618199996650219, 637433.907200001180172, 0.0 ], [ 645773.82320000231266, 637434.474199999123812, 0.0 ], [ 645776.803099997341633, 637442.737100001424551, 0.0 ], [ 645780.256099998950958, 637446.228199999779463, 0.0 ], [ 645783.94990000128746, 637447.050599999725819, 0.0 ], [ 645788.565999999642372, 637448.078200001269579, 0.0 ], [ 645802.130900003015995, 637457.795099999755621, 0.0 ], [ 645807.531000003218651, 637455.550200000405312, 0.0 ], [ 645826.922799997031689, 637463.063200000673532, 0.0 ], [ 645836.531800001859665, 637459.990100000053644, 0.0 ], [ 645842.190800003707409, 637460.414200000464916, 0.0 ], [ 645848.491800002753735, 637459.460200000554323, 0.0 ], [ 645850.55290000140667, 637446.447200000286102, 0.0 ], [ 645864.007799997925758, 637451.085200000554323, 0.0 ], [ 645877.406800001859665, 637452.736200001090765, 0.0 ], [ 645892.892800003290176, 637451.424100000411272, 0.0 ], [ 645897.852700002491474, 637454.183200001716614, 0.0 ], [ 645904.517700001597404, 637454.663199998438358, 0.0 ], [ 645907.304499998688698, 637478.290100000798702, 0.0 ], [ 645915.466399997472763, 637480.844200000166893, 0.0 ], [ 645921.040399998426437, 637479.055100001394749, 0.0 ], [ 645933.352399997413158, 637479.455099999904633, 0.0 ], [ 645944.842500001192093, 637481.037099998444319, 0.0 ], [ 645974.750699996948242, 637482.901000000536442, 0.0 ], [ 645997.433700002729893, 637488.484999999403954, 0.0 ], [ 646008.621699996292591, 637494.359999999403954, 0.0 ], [ 646024.880800001323223, 637495.037900000810623, 0.0 ], [ 646035.520900003612041, 637496.591899998486042, 0.0 ], [ 646053.925999999046326, 637501.117899999022484, 0.0 ], [ 646063.038900002837181, 637510.339800000190735, 0.0 ], [ 646076.25789999961853, 637520.932799998670816, 0.0 ], [ 646100.225900001823902, 637527.598700001835823, 0.0 ], [ 646104.776000000536442, 637523.160799998790026, 0.0 ], [ 646125.622100003063679, 637531.435699999332428, 0.0 ], [ 646132.568999998271465, 637537.238699998706579, 0.0 ], [ 646139.203100003302097, 637539.381700001657009, 0.0 ], [ 646146.750200003385544, 637536.806699998676777, 0.0 ], [ 646155.603200003504753, 637536.748599998652935, 0.0 ], [ 646180.23929999768734, 637541.976599998772144, 0.0 ], [ 646201.035400003194809, 637543.869600001722574, 0.0 ], [ 646258.440600000321865, 637559.322399999946356, 0.0 ], [ 646288.05349999666214, 637579.578400000929832, 0.0 ], [ 646392.405500002205372, 637673.848999999463558, 0.0 ], [ 646483.679799996316433, 637734.910599999129772, 0.0 ], [ 646485.492899999022484, 637736.123700000345707, 0.0 ], [ 646510.939300000667572, 637714.410700000822544, 0.0 ], [ 646519.284400001168251, 637689.939699999988079, 0.0 ], [ 646545.390900000929832, 637663.338700000196695, 0.0 ], [ 646565.095200002193451, 637639.127700001001358, 0.0 ], [ 646601.601999998092651, 637602.534600000828505, 0.0 ], [ 646606.255999997258186, 637601.580600000917912, 0.0 ], [ 646761.520199999213219, 637454.263300001621246, 0.0 ], [ 646774.513199999928474, 637465.691300000995398, 0.0 ], [ 646791.054099999368191, 637480.239199999719858, 0.0 ], [ 646935.312700003385544, 637607.121800001710653, 0.0 ] ], [ [ 647077.671800002455711, 636762.716499999165535, 0.0 ], [ 647031.378799997270107, 636865.507100000977516, 0.0 ], [ 646983.256099998950958, 636979.969300001859665, 0.0 ], [ 647088.540200002491474, 637079.715199999511242, 0.0 ], [ 647066.021200001239777, 637109.603100001811981, 0.0 ], [ 647041.423299998044968, 637145.349899999797344, 0.0 ], [ 647001.55349999666214, 637235.438000001013279, 0.0 ], [ 646965.572700001299381, 637208.043299999088049, 0.0 ], [ 646916.187200002372265, 637168.36600000038743, 0.0 ], [ 646887.049400001764297, 637146.597100000828505, 0.0 ], [ 646858.613499999046326, 637136.015599999576807, 0.0 ], [ 646735.680500000715256, 637106.141800001263618, 0.0 ], [ 646592.388300001621246, 637076.671900000423193, 0.0 ], [ 646603.008299998939037, 636986.939500000327826, 0.0 ], [ 646631.946599997580051, 636846.92850000038743, 0.0 ], [ 646603.122699998319149, 636812.690900001674891, 0.0 ], [ 646545.257100000977516, 636737.622000001370907, 0.0 ], [ 646429.878700003027916, 636774.4206000007689, 0.0 ], [ 646346.563400000333786, 636803.754000000655651, 0.0 ], [ 646303.29389999806881, 636708.405999999493361, 0.0 ], [ 646405.879199996590614, 636640.746800001710653, 0.0 ], [ 646485.744099996984005, 636589.272300001233816, 0.0 ], [ 646593.126000002026558, 636524.192099999636412, 0.0 ], [ 646646.316500000655651, 636496.276599999517202, 0.0 ], [ 646623.57209999859333, 636450.805700000375509, 0.0 ], [ 646598.219200000166893, 636397.94370000064373, 0.0 ], [ 646572.85419999808073, 636315.472500000149012, 0.0 ], [ 646587.119599997997284, 636316.505399998277426, 0.0 ], [ 646681.998400002717972, 636278.235800001770258, 0.0 ], [ 646703.941399998962879, 636362.003400001674891, 0.0 ], [ 646769.491200000047684, 636332.417599998414516, 0.0 ], [ 646819.776100002229214, 636297.7364999987185, 0.0 ], [ 646985.101599998772144, 636309.224899999797344, 0.0 ], [ 646994.058600001037121, 636144.445900000631809, 0.0 ], [ 647141.759300000965595, 636155.635400000959635, 0.0 ], [ 647158.98589999973774, 636219.824400000274181, 0.0 ], [ 647185.368600003421307, 636284.5614, 0.0 ], [ 647213.234899997711182, 636355.673500001430511, 0.0 ], [ 647257.141999997198582, 636475.693399999290705, 0.0 ], [ 647153.861000001430511, 636481.27479999884963, 0.0 ], [ 647134.05290000140667, 636577.584100000560284, 0.0 ], [ 647114.590499997138977, 636655.565600000321865, 0.0 ], [ 647094.64469999819994, 636727.187600001692772, 0.0 ], [ 647077.671800002455711, 636762.716499999165535, 0.0 ] ] ] ] } },
+{ "type": "Feature", "properties": { "fid": 37, "ogc_fid": 10413, "ogc_fid0": 10413, "cd_sector": "52063C19-", "tx_sector_descr_nl": "RENISSART - SCOUMONT", "tx_sector_descr_fr": "RENISSART - SCOUMONT", "tx_sector_descr_de": "RENISSART - SCOUMONT", "cd_sub_munty": "52063C", "tx_sub_munty_nl": "ARQUENNES", "tx_sub_munty_fr": "ARQUENNES", "tx_munty_dstr": null, "cd_munty_refnis": "55085", "tx_munty_descr_nl": "Seneffe", "tx_munty_descr_fr": "Seneffe", "tx_munty_descr_de": "Seneffe", "cd_dstr_refnis": "55000", "tx_adm_dstr_descr_nl": "Arrondissement Zinnik", "tx_adm_dstr_descr_fr": "Arrondissement de Soignies", "tx_adm_dstr_descr_de": "Bezirk Soignies", "cd_prov_refnis": "50000", "tx_prov_descr_nl": "Provincie Henegouwen", "tx_prov_descr_fr": "Province du Hainaut", "tx_prov_descr_de": "Provinz Hennegau", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE32", "cd_nuts_lvl3": "BE32C", "ms_area_ha": 272.93298116900002, "ms_perimeter_m": 10600.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 645485.950199998915195, 638073.422600001096725, 0.0 ], [ 645520.941299997270107, 638015.020799998193979, 0.0 ], [ 645670.2246999964118, 637986.179699998348951, 0.0 ], [ 645631.259099997580051, 637963.893800001591444, 0.0 ], [ 645660.656499996781349, 637905.06980000063777, 0.0 ], [ 645672.675499998033047, 637875.180799998342991, 0.0 ], [ 645672.17960000038147, 637841.431099999696016, 0.0 ], [ 645660.639799997210503, 637781.68019999936223, 0.0 ], [ 645661.865299999713898, 637725.290000000037253, 0.0 ], [ 645673.056900002062321, 637690.854200001806021, 0.0 ], [ 645684.575800001621246, 637662.496399998664856, 0.0 ], [ 645712.862499997019768, 637614.343899998813868, 0.0 ], [ 645745.678700000047684, 637581.629299998283386, 0.0 ], [ 645756.697700001299381, 637553.021499998867512, 0.0 ], [ 645750.061599999666214, 637515.552200000733137, 0.0 ], [ 645754.64360000193119, 637481.209399998188019, 0.0 ], [ 645766.801299996674061, 637467.663899999111891, 0.0 ], [ 645764.864200003445148, 637465.741900000721216, 0.0 ], [ 645781.694200001657009, 637449.259700000286102, 0.0 ], [ 645783.568400003015995, 637447.424100000411272, 0.0 ], [ 645783.94990000128746, 637447.050599999725819, 0.0 ], [ 645780.256099998950958, 637446.228199999779463, 0.0 ], [ 645776.803099997341633, 637442.737100001424551, 0.0 ], [ 645773.82320000231266, 637434.474199999123812, 0.0 ], [ 645773.618199996650219, 637433.907200001180172, 0.0 ], [ 645778.672200001776218, 637430.027199998497963, 0.0 ], [ 645782.781300000846386, 637428.333200000226498, 0.0 ], [ 645786.384300000965595, 637425.962200000882149, 0.0 ], [ 645789.17230000346899, 637421.105200000107288, 0.0 ], [ 645786.636399999260902, 637412.630300000309944, 0.0 ], [ 645785.931400001049042, 637412.280200000852346, 0.0 ], [ 645752.149700000882149, 637395.519299998879433, 0.0 ], [ 645749.506599999964237, 637394.208299998193979, 0.0 ], [ 645751.624799996614456, 637389.805300001055002, 0.0 ], [ 645754.92790000140667, 637372.615299999713898, 0.0 ], [ 645752.261200003325939, 637347.430300001055002, 0.0 ], [ 645751.026500001549721, 637313.582299999892712, 0.0 ], [ 645753.761799998581409, 637290.475299999117851, 0.0 ], [ 645776.701200000941753, 637239.631400000303984, 0.0 ], [ 645783.958400003612041, 637218.556400001049042, 0.0 ], [ 645789.615599997341633, 637196.962400000542402, 0.0 ], [ 645791.806699998676777, 637182.616399999707937, 0.0 ], [ 645802.586300000548363, 637130.156500000506639, 0.0 ], [ 645818.548900000751019, 637069.700500000268221, 0.0 ], [ 645832.14639999717474, 637022.497600000351667, 0.0 ], [ 645834.016800001263618, 636984.520700000226498, 0.0 ], [ 645828.644900001585484, 636967.749600000679493, 0.0 ], [ 645820.723099999129772, 636953.384700000286102, 0.0 ], [ 645802.733400002121925, 636926.734700001776218, 0.0 ], [ 645764.520999997854233, 636870.750799998641014, 0.0 ], [ 645739.0033999979496, 636831.40989999845624, 0.0 ], [ 645707.247000001370907, 636774.249899998307228, 0.0 ], [ 645700.449199996888638, 636758.83500000089407, 0.0 ], [ 645694.106299996376038, 636742.598900001496077, 0.0 ], [ 645688.695600003004074, 636715.24100000038743, 0.0 ], [ 645685.718000002205372, 636672.317999999970198, 0.0 ], [ 645683.933399997651577, 636640.184999998658895, 0.0 ], [ 645683.388599999248981, 636614.067099999636412, 0.0 ], [ 645681.237899996340275, 636584.819200001657009, 0.0 ], [ 645676.214199997484684, 636556.433200001716614, 0.0 ], [ 645669.223499998450279, 636516.441199999302626, 0.0 ], [ 645657.523299999535084, 636438.881299998611212, 0.0 ], [ 645653.017599999904633, 636401.6554000005126, 0.0 ], [ 645653.200800001621246, 636385.353300001472235, 0.0 ], [ 645655.573899999260902, 636371.615299999713898, 0.0 ], [ 645660.96509999781847, 636359.543400000780821, 0.0 ], [ 645670.835199996829033, 636342.000399999320507, 0.0 ], [ 645700.980800002813339, 636291.502399999648333, 0.0 ], [ 645757.162399999797344, 636329.334399998188019, 0.0 ], [ 645784.385399997234344, 636345.3733000010252, 0.0 ], [ 645803.718699999153614, 636314.366300001740456, 0.0 ], [ 645835.000200003385544, 636270.033399999141693, 0.0 ], [ 645846.821299999952316, 636254.38740000128746, 0.0 ], [ 645882.186800003051758, 636216.747400000691414, 0.0 ], [ 645908.316200003027916, 636184.510499998927116, 0.0 ], [ 645922.706500001251698, 636162.469500001519918, 0.0 ], [ 645935.865800000727177, 636133.787500001490116, 0.0 ], [ 645954.495399996638298, 636089.4364, 0.0 ], [ 645974.8412000015378, 636040.897399999201298, 0.0 ], [ 645996.933899998664856, 635995.496399998664856, 0.0 ], [ 646010.820299997925758, 635969.109400000423193, 0.0 ], [ 646027.200699999928474, 635943.368400000035763, 0.0 ], [ 646048.601899996399879, 635916.965300001204014, 0.0 ], [ 646066.088299997150898, 635896.229299999773502, 0.0 ], [ 646079.111400000751019, 635884.851199999451637, 0.0 ], [ 646107.016800001263618, 635863.99210000038147, 0.0 ], [ 646131.028099998831749, 635845.903000000864267, 0.0 ], [ 646153.697400003671646, 635826.238000001758337, 0.0 ], [ 646176.383699998259544, 635807.691899999976158, 0.0 ], [ 646221.493299998342991, 635773.862799998372793, 0.0 ], [ 646260.309799998998642, 635746.189699999988079, 0.0 ], [ 646270.869000002741814, 635739.557700000703335, 0.0 ], [ 646290.422200001776218, 635730.236699998378754, 0.0 ], [ 646308.829499997198582, 635718.475600000470877, 0.0 ], [ 646338.550899997353554, 635695.246500000357628, 0.0 ], [ 646384.930600002408028, 635654.944299999624491, 0.0 ], [ 646407.601899996399879, 635635.366300001740456, 0.0 ], [ 646417.675999999046326, 635628.691300000995398, 0.0 ], [ 646439.133299998939037, 635620.414200000464916, 0.0 ], [ 646465.395599998533726, 635611.179099999368191, 0.0 ], [ 646497.314099997282028, 635600.368999999016523, 0.0 ], [ 646513.822300001978874, 635593.1689000017941, 0.0 ], [ 646524.511399999260902, 635585.775800000876188, 0.0 ], [ 646574.6570999994874, 635534.901700001209974, 0.0 ], [ 646584.472300000488758, 635527.435699999332428, 0.0 ], [ 646594.354400001466274, 635521.381700001657009, 0.0 ], [ 646595.323500000056811, 635521.07319999858737, 0.0 ], [ 646595.15820000320673, 635520.742400001734495, 0.0 ], [ 646592.918099999427795, 635516.262600000947714, 0.0 ], [ 646571.954499997198582, 635474.338599998503923, 0.0 ], [ 646514.072599999606609, 635405.363400001078844, 0.0 ], [ 646450.566899999976158, 635325.981499999761581, 0.0 ], [ 646280.947200000286102, 635424.444899998605251, 0.0 ], [ 646240.332099996507168, 635474.424100000411272, 0.0 ], [ 646105.756499998271465, 635331.034200001507998, 0.0 ], [ 646026.734200000762939, 635393.008699998259544, 0.0 ], [ 646011.589900001883507, 635424.49100000038743, 0.0 ], [ 645981.618199996650219, 635450.75279999896884, 0.0 ], [ 645948.709100000560284, 635477.889299999922514, 0.0 ], [ 645913.611699998378754, 635510.650400001555681, 0.0 ], [ 645886.061800003051758, 635538.475099999457598, 0.0 ], [ 645848.917499996721745, 635571.251600001007318, 0.0 ], [ 645823.821199998259544, 635593.967199999839067, 0.0 ], [ 645804.584299996495247, 635616.839800000190735, 0.0 ], [ 645796.187600001692772, 635667.994600001722574, 0.0 ], [ 645782.714800000190735, 635702.977099999785423, 0.0 ], [ 645773.242399998009205, 635733.835099998861551, 0.0 ], [ 645770.145000003278255, 635765.365699999034405, 0.0 ], [ 645756.811599999666214, 635810.004299998283386, 0.0 ], [ 645736.464000001549721, 635843.563999999314547, 0.0 ], [ 645714.554200001060963, 635875.108199998736382, 0.0 ], [ 645689.411499999463558, 635894.511199999600649, 0.0 ], [ 645624.064400002360344, 635926.956300001591444, 0.0 ], [ 645594.281599998474121, 635941.608899999409914, 0.0 ], [ 645566.138599999248981, 635963.85530000180006, 0.0 ], [ 645540.838799998164177, 635988.852099999785423, 0.0 ], [ 645515.211599998176098, 636009.802099999040365, 0.0 ], [ 645461.30179999768734, 636043.07660000026226, 0.0 ], [ 645432.813699997961521, 636076.244699999690056, 0.0 ], [ 645447.888999998569489, 636099.136999998241663, 0.0 ], [ 645465.980200000107288, 636120.201499998569489, 0.0 ], [ 645487.321599997580051, 636137.407000001519918, 0.0 ], [ 645523.552500002086163, 636164.301899999380112, 0.0 ], [ 645598.841899998486042, 636222.357200000435114, 0.0 ], [ 645592.450499996542931, 636228.465799998492002, 0.0 ], [ 645530.318899996578693, 636287.785900000482798, 0.0 ], [ 645512.556199997663498, 636265.002700001001358, 0.0 ], [ 645510.0253000035882, 636262.143100000917912, 0.0 ], [ 645489.04389999806881, 636238.437699999660254, 0.0 ], [ 645465.797099999967031, 636212.872600000351667, 0.0 ], [ 645406.315399996936321, 636194.959399998188019, 0.0 ], [ 645364.767800003290176, 636203.938799999654293, 0.0 ], [ 645322.547499999403954, 636219.277499999850988, 0.0 ], [ 645280.296300001442432, 636232.600299999117851, 0.0 ], [ 645238.591700002551079, 636248.954599998891354, 0.0 ], [ 645216.228299997746944, 636283.811099998652935, 0.0 ], [ 645193.333800002932549, 636317.651900000870228, 0.0 ], [ 645163.969499997794628, 636360.741599999368191, 0.0 ], [ 645139.559199996292591, 636395.113400001078844, 0.0 ], [ 645105.898000001907349, 636439.780999999493361, 0.0 ], [ 645082.079000003635883, 636496.762200001627207, 0.0 ], [ 645069.918200001120567, 636534.760400000959635, 0.0 ], [ 645049.758599996566772, 636564.257800001651049, 0.0 ], [ 645030.895700000226498, 636595.255300000309944, 0.0 ], [ 645011.17429999995511, 636619.924499999731779, 0.0 ], [ 645003.67119999974966, 636646.438999999314547, 0.0 ], [ 644990.541400000452995, 636687.249699998646975, 0.0 ], [ 644974.068199999630451, 636725.325399998575449, 0.0 ], [ 644960.798900000751019, 636756.995600000023842, 0.0 ], [ 644942.451499998569489, 636788.493200000375509, 0.0 ], [ 644920.588200002908707, 636823.099700000137091, 0.0 ], [ 644894.443400003015995, 636860.283700000494719, 0.0 ], [ 644868.564000003039837, 636898.499099999666214, 0.0 ], [ 644839.060300000011921, 636931.932700000703335, 0.0 ], [ 644808.916900001466274, 636956.757100000977516, 0.0 ], [ 644782.789700001478195, 636977.441199999302626, 0.0 ], [ 644740.489699997007847, 637005.232900001108646, 0.0 ], [ 644695.893299996852875, 637032.039799999445677, 0.0 ], [ 644654.11089999973774, 637042.800299998372793, 0.0 ], [ 644612.720399998128414, 637044.936200000345707, 0.0 ], [ 644578.892800003290176, 637043.650800000876188, 0.0 ], [ 644542.25280000269413, 637041.130800001323223, 0.0 ], [ 644490.456600002944469, 637038.030900001525879, 0.0 ], [ 644450.237800002098083, 637040.697999998927116, 0.0 ], [ 644411.487099997699261, 637049.64640000090003, 0.0 ], [ 644369.782499998807907, 637066.000700000673532, 0.0 ], [ 644333.686899997293949, 637082.77760000154376, 0.0 ], [ 644279.825699999928474, 637101.848999999463558, 0.0 ], [ 644226.902699999511242, 637115.3114, 0.0 ], [ 644195.51129999756813, 637124.151399999856949, 0.0 ], [ 644152.447899997234344, 637133.661800000816584, 0.0 ], [ 644103.306400001049042, 637144.796500001102686, 0.0 ], [ 644058.758500002324581, 637157.369199998676777, 0.0 ], [ 644021.647299997508526, 637174.677099999040365, 0.0 ], [ 643993.73870000243187, 637196.407999999821186, 0.0 ], [ 643959.063699997961521, 637223.825399998575449, 0.0 ], [ 643924.404500000178814, 637252.008699998259544, 0.0 ], [ 643888.93299999833107, 637276.910399999469519, 0.0 ], [ 643850.633699998259544, 637300.311900001019239, 0.0 ], [ 643817.490099996328354, 637327.714099999517202, 0.0 ], [ 643792.955700002610683, 637354.226599998772144, 0.0 ], [ 643745.827899999916553, 637380.908100001513958, 0.0 ], [ 643736.54619999974966, 637385.907000001519918, 0.0 ], [ 643730.626199997961521, 637371.500199999660254, 0.0 ], [ 643675.904899999499321, 637395.930900000035763, 0.0 ], [ 643662.325800001621246, 637404.08559999987483, 0.0 ], [ 643660.965700000524521, 637412.225999999791384, 0.0 ], [ 643658.246100001037121, 637419.022399999201298, 0.0 ], [ 643665.041500002145767, 637429.89809999987483, 0.0 ], [ 643669.119400002062321, 637432.617400001734495, 0.0 ], [ 643688.697599999606609, 637429.213500000536442, 0.0 ], [ 643700.369800001382828, 637427.183499999344349, 0.0 ], [ 643708.695699997246265, 637443.8564000017941, 0.0 ], [ 643712.585600003600121, 637451.638000000268221, 0.0 ], [ 643722.474799998104572, 637462.279699999839067, 0.0 ], [ 643723.490199998021126, 637463.904800001531839, 0.0 ], [ 643734.332599997520447, 637474.734200000762939, 0.0 ], [ 643737.04929999995511, 637491.046799998730421, 0.0 ], [ 643739.749099999666214, 637519.578299999237061, 0.0 ], [ 643743.122800000011921, 637529.687800001353025, 0.0 ], [ 643756.058700002729893, 637541.330099999904633, 0.0 ], [ 643769.651399999856949, 637549.472199998795986, 0.0 ], [ 643787.30799999833107, 637545.396200001239777, 0.0 ], [ 643796.746500000357628, 637537.537900000810623, 0.0 ], [ 643803.622100003063679, 637531.820000000298023, 0.0 ], [ 643825.10530000180006, 637540.55689999833703, 0.0 ], [ 643826.245800003409386, 637541.025800000876188, 0.0 ], [ 643840.3074000030756, 637546.761900000274181, 0.0 ], [ 643848.446400001645088, 637561.715900000184774, 0.0 ], [ 643849.366800002753735, 637572.903299998492002, 0.0 ], [ 643851.161700002849102, 637588.887800000607967, 0.0 ], [ 643862.333400003612041, 637590.748500000685453, 0.0 ], [ 643875.629799999296665, 637592.968899998813868, 0.0 ], [ 643893.284599997103214, 637603.845899999141693, 0.0 ], [ 643906.871799997985363, 637658.190699998289347, 0.0 ], [ 643916.366499997675419, 637701.675900001078844, 0.0 ], [ 643921.802000001072884, 637719.332600001245737, 0.0 ], [ 643912.30009999871254, 637735.643899999558926, 0.0 ], [ 643908.845299996435642, 637749.471599999815226, 0.0 ], [ 643908.219999998807907, 637751.940099999308586, 0.0 ], [ 643906.85869999974966, 637768.252399999648333, 0.0 ], [ 643928.356799997389317, 637782.254900000989437, 0.0 ], [ 643928.966099999845028, 637783.286100000143051, 0.0 ], [ 643959.166400000452995, 637805.617800001055002, 0.0 ], [ 643963.241300001740456, 637831.445999998599291, 0.0 ], [ 643957.80120000243187, 637854.539000000804663, 0.0 ], [ 643957.128799997270107, 637857.898299999535084, 0.0 ], [ 643959.126599997282028, 637875.851599998772144, 0.0 ], [ 643967.718699999153614, 637889.993099998682737, 0.0 ], [ 643994.481499999761581, 637911.605500001460314, 0.0 ], [ 644002.62049999833107, 637923.840599998831749, 0.0 ], [ 644005.335600003600121, 637955.090599998831749, 0.0 ], [ 644005.333700001239777, 637970.69990000128746, 0.0 ], [ 644005.332699999213219, 637979.543699998408556, 0.0 ], [ 644006.98679999995511, 637996.981300000101328, 0.0 ], [ 644021.705099999904633, 638000.404800001531839, 0.0 ], [ 644022.8766999989748, 638001.7956000007689, 0.0 ], [ 644042.799400001764297, 637994.298000000417233, 0.0 ], [ 644068.0337999984622, 637992.504200000315905, 0.0 ], [ 644087.252400003373623, 637991.131499998271465, 0.0 ], [ 644112.642099998891354, 637999.071899998933077, 0.0 ], [ 644117.031800001859665, 638006.025600001215935, 0.0 ], [ 644124.749899998307228, 638009.776399999856949, 0.0 ], [ 644148.138400003314018, 638027.716499999165535, 0.0 ], [ 644178.961499996483326, 638066.876200001686811, 0.0 ], [ 644200.161499999463558, 638092.206599999219179, 0.0 ], [ 644220.876999996602535, 638118.568199999630451, 0.0 ], [ 644241.249399997293949, 638138.570500001311302, 0.0 ], [ 644286.638400003314018, 638149.341400001198053, 0.0 ], [ 644329.701700001955032, 638138.799800001084805, 0.0 ], [ 644353.330799996852875, 638103.162300001829863, 0.0 ], [ 644382.4408999979496, 638094.868900001049042, 0.0 ], [ 644427.050899997353554, 638086.85869999974966, 0.0 ], [ 644431.67960000038147, 638055.312699999660254, 0.0 ], [ 644439.748700000345707, 637998.564100001007318, 0.0 ], [ 644465.36259999871254, 637959.598700001835823, 0.0 ], [ 644501.117200002074242, 637918.462600000202656, 0.0 ], [ 644533.526299998164177, 637893.357299998402596, 0.0 ], [ 644569.214699998497963, 637882.924199998378754, 0.0 ], [ 644610.85530000180006, 637879.788400001823902, 0.0 ], [ 644670.697700001299381, 637887.279899999499321, 0.0 ], [ 644705.443800002336502, 637918.002599999308586, 0.0 ], [ 644722.42429999995511, 637949.504399999976158, 0.0 ], [ 644779.653800003230572, 637986.995299998670816, 0.0 ], [ 644812.00280000269413, 637939.561900001019239, 0.0 ], [ 644836.187700003385544, 637960.017900001257658, 0.0 ], [ 644879.748999997973442, 637966.491799999028444, 0.0 ], [ 644921.57769999653101, 637959.793600000441074, 0.0 ], [ 644969.45160000026226, 637965.689899999648333, 0.0 ], [ 645018.953699998557568, 637944.39919999986887, 0.0 ], [ 645047.453299999237061, 637945.761900000274181, 0.0 ], [ 645071.3766999989748, 637930.686700001358986, 0.0 ], [ 645086.913900002837181, 637881.204599998891354, 0.0 ], [ 645116.411499999463558, 637899.317299999296665, 0.0 ], [ 645156.173799999058247, 637924.368900001049042, 0.0 ], [ 645189.623199999332428, 637952.325599998235703, 0.0 ], [ 645224.307499997317791, 637977.970199998468161, 0.0 ], [ 645281.240199998021126, 638013.445500001311302, 0.0 ], [ 645320.252599999308586, 638039.278099998831749, 0.0 ], [ 645351.484599999967031, 638055.328499998897314, 0.0 ], [ 645390.248999997973442, 638064.411299999803305, 0.0 ], [ 645428.873800002038479, 638064.103300001472235, 0.0 ], [ 645485.950199998915195, 638073.422600001096725, 0.0 ] ] ] ] } },
+{ "type": "Feature", "properties": { "fid": 38, "ogc_fid": 10414, "ogc_fid0": 10414, "cd_sector": "52063D002", "tx_sector_descr_nl": "PETIT-ROEULX-L-NIVELLES-CENTRE", "tx_sector_descr_fr": "PETIT-ROEULX-L-NIVELLES-CENTRE", "tx_sector_descr_de": "PETIT-ROEULX-L-NIVELLES-CENTRE", "cd_sub_munty": "52063D", "tx_sub_munty_nl": "PETIT-ROEULX-LES-NIVELLES", "tx_sub_munty_fr": "PETIT-ROEULX-LES-NIVELLES", "tx_munty_dstr": null, "cd_munty_refnis": "55085", "tx_munty_descr_nl": "Seneffe", "tx_munty_descr_fr": "Seneffe", "tx_munty_descr_de": "Seneffe", "cd_dstr_refnis": "55000", "tx_adm_dstr_descr_nl": "Arrondissement Zinnik", "tx_adm_dstr_descr_fr": "Arrondissement de Soignies", "tx_adm_dstr_descr_de": "Bezirk Soignies", "cd_prov_refnis": "50000", "tx_prov_descr_nl": "Provincie Henegouwen", "tx_prov_descr_fr": "Province du Hainaut", "tx_prov_descr_de": "Provinz Hennegau", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE32", "cd_nuts_lvl3": "BE32C", "ms_area_ha": 34.392673567400003, "ms_perimeter_m": 4033.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 645709.226499997079372, 639016.800999999046326, 0.0 ], [ 645714.791199997067451, 638999.333000000566244, 0.0 ], [ 645716.588600002229214, 638993.661299999803305, 0.0 ], [ 645724.277099996805191, 638986.412200000137091, 0.0 ], [ 645753.844700001180172, 638940.400499999523163, 0.0 ], [ 645802.806000001728535, 638869.281899999827147, 0.0 ], [ 645749.808899998664856, 638848.400800000876188, 0.0 ], [ 645749.200099997222424, 638843.166400000452995, 0.0 ], [ 645725.029399998486042, 638835.476100001484156, 0.0 ], [ 645753.45830000191927, 638774.589400000870228, 0.0 ], [ 645754.864799998700619, 638771.558400001376867, 0.0 ], [ 645764.478900000452995, 638731.372299998998642, 0.0 ], [ 645782.217299997806549, 638697.171500001102686, 0.0 ], [ 645799.126000002026558, 638674.658100001513958, 0.0 ], [ 645816.364600002765656, 638638.175999999046326, 0.0 ], [ 645827.509400002658367, 638602.412000000476837, 0.0 ], [ 645839.452100001275539, 638558.523200001567602, 0.0 ], [ 645856.488499999046326, 638513.650600001215935, 0.0 ], [ 645866.600100003182888, 638495.042599998414516, 0.0 ], [ 645919.955399997532368, 638525.767499998211861, 0.0 ], [ 645994.715599998831749, 638566.041700001806021, 0.0 ], [ 646033.964800000190735, 638569.968299999833107, 0.0 ], [ 646043.312799997627735, 638534.172699999064207, 0.0 ], [ 646060.217699997127056, 638543.674699999392033, 0.0 ], [ 646085.762000001966953, 638563.115100000053644, 0.0 ], [ 646090.37049999833107, 638570.552999999374151, 0.0 ], [ 646164.145499996840954, 638617.374000001698732, 0.0 ], [ 646163.487800002098083, 638629.811299998313189, 0.0 ], [ 646169.388099998235703, 638679.202199999243021, 0.0 ], [ 646252.571800000965595, 638706.071299999952316, 0.0 ], [ 646258.387800000607967, 638675.587799999862909, 0.0 ], [ 646268.065399996936321, 638627.620799999684095, 0.0 ], [ 646272.240099996328354, 638603.714999999850988, 0.0 ], [ 646282.509300000965595, 638572.122900001704693, 0.0 ], [ 646280.040700003504753, 638570.638199999928474, 0.0 ], [ 646284.448399998247623, 638559.935699999332428, 0.0 ], [ 646230.592600002884865, 638532.991999998688698, 0.0 ], [ 646185.704099997878075, 638518.61179999995511, 0.0 ], [ 646154.861299999058247, 638512.451799999922514, 0.0 ], [ 646157.554499998688698, 638463.624499998986721, 0.0 ], [ 646163.264799997210503, 638403.922499999403954, 0.0 ], [ 646169.942400000989437, 638354.392499998211861, 0.0 ], [ 646178.742399998009205, 638328.518699999898672, 0.0 ], [ 646189.839400000870228, 638301.395300000905991, 0.0 ], [ 646203.764899998903275, 638269.178399998694658, 0.0 ], [ 646213.545999996364117, 638269.038899999111891, 0.0 ], [ 646233.471400000154972, 638239.151000000536442, 0.0 ], [ 646352.431699998676777, 638301.352000001817942, 0.0 ], [ 646394.02759999781847, 638280.341600000858307, 0.0 ], [ 646440.686499997973442, 638254.925500001758337, 0.0 ], [ 646464.313299998641014, 638238.350299999117851, 0.0 ], [ 646433.380599997937679, 638201.159499999135733, 0.0 ], [ 646411.288999997079372, 638183.422600001096725, 0.0 ], [ 646393.792000003159046, 638160.045699998736382, 0.0 ], [ 646332.748599998652935, 638135.772999998182058, 0.0 ], [ 646270.33049999922514, 638106.718800000846386, 0.0 ], [ 646196.459200002253056, 638080.647799998521805, 0.0 ], [ 646126.134900003671646, 638054.342700000852346, 0.0 ], [ 646039.373099997639656, 638028.520100001245737, 0.0 ], [ 645997.07940000295639, 638003.749699998646975, 0.0 ], [ 645959.175800003111362, 637984.495299998670816, 0.0 ], [ 645936.906000003218651, 638021.398600000888109, 0.0 ], [ 645890.459299996495247, 638100.267400000244379, 0.0 ], [ 645846.405199997127056, 638165.136599998921156, 0.0 ], [ 645835.692100003361702, 638248.322299998253584, 0.0 ], [ 645814.359599999967031, 638288.08500000089407, 0.0 ], [ 645794.84009999781847, 638322.019799999892712, 0.0 ], [ 645772.257700003683567, 638358.985599998384714, 0.0 ], [ 645740.813799999654293, 638413.434599999338388, 0.0 ], [ 645724.168399997055531, 638454.994699999690056, 0.0 ], [ 645707.147900000214577, 638497.336100000888109, 0.0 ], [ 645690.143299996852875, 638536.864999998360872, 0.0 ], [ 645667.99719999730587, 638585.018199998885393, 0.0 ], [ 645656.150399997830391, 638610.360399998724461, 0.0 ], [ 645628.346699997782707, 638670.403400000184774, 0.0 ], [ 645609.061099998652935, 638708.916499998420477, 0.0 ], [ 645592.870099999010563, 638738.304999999701977, 0.0 ], [ 645579.491899996995926, 638766.162599999457598, 0.0 ], [ 645568.112899996340275, 638799.895100001245737, 0.0 ], [ 645542.186099998652935, 638843.954300001263618, 0.0 ], [ 645506.822200000286102, 638883.840300001204014, 0.0 ], [ 645496.89919999986887, 638895.026700001209974, 0.0 ], [ 645483.521099999547005, 638921.368500001728535, 0.0 ], [ 645470.297200001776218, 638965.757100000977516, 0.0 ], [ 645471.531499996781349, 638966.02309999987483, 0.0 ], [ 645459.465499997138977, 638995.318199999630451, 0.0 ], [ 645516.370600000023842, 639000.746700000017881, 0.0 ], [ 645576.652099996805191, 638995.988400001078844, 0.0 ], [ 645574.54169999808073, 639004.441199999302626, 0.0 ], [ 645560.850199997425079, 639038.517299998551607, 0.0 ], [ 645662.866499997675419, 639025.248399998992682, 0.0 ], [ 645672.226400002837181, 639020.577799998223782, 0.0 ], [ 645709.226499997079372, 639016.800999999046326, 0.0 ] ] ] ] } },
+{ "type": "Feature", "properties": { "fid": 40, "ogc_fid": 10416, "ogc_fid0": 10416, "cd_sector": "52063D091", "tx_sector_descr_nl": "MARAIS - LUXENSART - SCOUMONT", "tx_sector_descr_fr": "MARAIS - LUXENSART - SCOUMONT", "tx_sector_descr_de": "MARAIS - LUXENSART - SCOUMONT", "cd_sub_munty": "52063D", "tx_sub_munty_nl": "PETIT-ROEULX-LES-NIVELLES", "tx_sub_munty_fr": "PETIT-ROEULX-LES-NIVELLES", "tx_munty_dstr": null, "cd_munty_refnis": "55085", "tx_munty_descr_nl": "Seneffe", "tx_munty_descr_fr": "Seneffe", "tx_munty_descr_de": "Seneffe", "cd_dstr_refnis": "55000", "tx_adm_dstr_descr_nl": "Arrondissement Zinnik", "tx_adm_dstr_descr_fr": "Arrondissement de Soignies", "tx_adm_dstr_descr_de": "Bezirk Soignies", "cd_prov_refnis": "50000", "tx_prov_descr_nl": "Provincie Henegouwen", "tx_prov_descr_fr": "Province du Hainaut", "tx_prov_descr_de": "Provinz Hennegau", "cd_rgn_refnis": "03000", "tx_rgn_descr_nl": "Waals Gewest", "tx_rgn_descr_fr": "Région wallonne", "tx_rgn_descr_de": "Wallonische Region", "cd_country": "BE", "cd_nuts_lvl1": "BE3", "cd_nuts_lvl2": "BE32", "cd_nuts_lvl3": "BE32C", "ms_area_ha": 323.97911877500002, "ms_perimeter_m": 12727.0, "dt_situation": "2023-01-01" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 647170.211300000548363, 639887.005699999630451, 0.0 ], [ 647369.947899997234344, 639844.170899998396635, 0.0 ], [ 647568.510499998927116, 639801.593400001525879, 0.0 ], [ 647662.657899998128414, 639646.56810000166297, 0.0 ], [ 647716.095200002193451, 639567.544399999082088, 0.0 ], [ 647693.980099998414516, 639529.503499999642372, 0.0 ], [ 647689.943000003695488, 639506.644600000232458, 0.0 ], [ 647657.901900000870228, 639447.540699999779463, 0.0 ], [ 647639.006999999284744, 639401.6097999997437, 0.0 ], [ 647634.088899999856949, 639389.668800000101328, 0.0 ], [ 647612.783900000154972, 639360.588899999856949, 0.0 ], [ 647603.335799999535084, 639347.687899999320507, 0.0 ], [ 647574.459799997508526, 639317.925999999046326, 0.0 ], [ 647562.266699999570847, 639263.126200001686811, 0.0 ], [ 647523.511500000953674, 639231.874299999326468, 0.0 ], [ 647509.746500000357628, 639204.603399999439716, 0.0 ], [ 647495.368400000035763, 639187.132399998605251, 0.0 ], [ 647435.790100000798702, 639105.989700000733137, 0.0 ], [ 647411.553999997675419, 639089.497699998319149, 0.0 ], [ 647360.565800003707409, 639002.995099999010563, 0.0 ], [ 647362.444799996912479, 638993.760200001299381, 0.0 ], [ 647366.569799996912479, 638973.49720000103116, 0.0 ], [ 647371.073899999260902, 638938.9983000010252, 0.0 ], [ 647315.588500000536442, 638842.496700000017881, 0.0 ], [ 647317.199500001966953, 638839.576699998229742, 0.0 ], [ 647355.240800000727177, 638806.671799998730421, 0.0 ], [ 647380.38289999961853, 638779.386900000274181, 0.0 ], [ 647433.540200002491474, 638787.932900000363588, 0.0 ], [ 647449.920199997723103, 638791.504799999296665, 0.0 ], [ 647446.492200002074242, 638770.085999999195337, 0.0 ], [ 647431.236199997365475, 638743.685100000351667, 0.0 ], [ 647425.888199999928474, 638735.564100001007318, 0.0 ], [ 647402.30290000140667, 638700.473200000822544, 0.0 ], [ 647395.214000001549721, 638694.683299999684095, 0.0 ], [ 647383.594899997115135, 638693.0912000015378, 0.0 ], [ 647380.340899996459484, 638689.746199999004602, 0.0 ], [ 647378.979800000786781, 638684.397300001233816, 0.0 ], [ 647379.35980000346899, 638682.024300001561642, 0.0 ], [ 647380.888899996876717, 638674.089299999177456, 0.0 ], [ 647382.746799997985363, 638664.850299999117851, 0.0 ], [ 647379.888899996876717, 638651.253400001674891, 0.0 ], [ 647379.889799997210503, 638638.4864999987185, 0.0 ], [ 647379.53490000218153, 638617.840500000864267, 0.0 ], [ 647381.883900001645088, 638600.7195999994874, 0.0 ], [ 647386.317900002002716, 638586.808699999004602, 0.0 ], [ 647393.130999997258186, 638577.444699998944998, 0.0 ], [ 647397.469999998807907, 638572.064699999988079, 0.0 ], [ 647419.220100000500679, 638544.768699999898672, 0.0 ], [ 647445.452299997210503, 638525.504799999296665, 0.0 ], [ 647492.832599997520447, 638492.568799998611212, 0.0 ], [ 647529.215800002217293, 638465.023899998515844, 0.0 ], [ 647533.347800001502037, 638461.218899998813868, 0.0 ], [ 647536.460900001227856, 638457.197900000959635, 0.0 ], [ 647546.98589999973774, 638436.118000000715256, 0.0 ], [ 647563.277000002563, 638387.722199998795986, 0.0 ], [ 647572.089100003242493, 638379.5912000015378, 0.0 ], [ 647581.688199996948242, 638348.979299999773502, 0.0 ], [ 647604.95440000295639, 638267.118500001728535, 0.0 ], [ 647562.043099999427795, 638263.385600000619888, 0.0 ], [ 647483.027500003576279, 638273.089600000530481, 0.0 ], [ 647477.421499997377396, 638264.094700001180172, 0.0 ], [ 647452.358400002121925, 638202.897900000214577, 0.0 ], [ 647438.571400001645088, 638171.362100001424551, 0.0 ], [ 647431.119499996304512, 638154.980099998414516, 0.0 ], [ 647428.409599997103214, 638149.018100000917912, 0.0 ], [ 647426.030699998140335, 638143.341099999845028, 0.0 ], [ 647425.32769999653101, 638140.832100000232458, 0.0 ], [ 647424.312700003385544, 638135.703099999576807, 0.0 ], [ 647423.371799997985363, 638123.386100001633167, 0.0 ], [ 647423.145900003612041, 638114.579199999570847, 0.0 ], [ 647422.233900003135204, 638107.272100001573563, 0.0 ], [ 647420.189999997615814, 638099.158100001513958, 0.0 ], [ 647417.016000002622604, 638092.917199999094009, 0.0 ], [ 647412.905100002884865, 638087.776200000196695, 0.0 ], [ 647404.769000001251698, 638079.658300001174212, 0.0 ], [ 647403.464100003242493, 638077.771200001239777, 0.0 ], [ 647398.069099999964237, 638074.766199998557568, 0.0 ], [ 647377.398000001907349, 638062.082299999892712, 0.0 ], [ 647372.033600002527237, 637991.159400001168251, 0.0 ], [ 647392.787299998104572, 637938.209399998188019, 0.0 ], [ 647394.13459999859333, 637910.635499998927116, 0.0 ], [ 647391.5878000035882, 637883.317499998956919, 0.0 ], [ 647397.557199999690056, 637855.617499999701977, 0.0 ], [ 647344.226199999451637, 637798.400699999183416, 0.0 ], [ 647308.176399998366833, 637753.762899998575449, 0.0 ], [ 647233.774899996817112, 637740.973999999463558, 0.0 ], [ 647226.677799999713898, 637737.583000000566244, 0.0 ], [ 647133.137199997901917, 637726.213199999183416, 0.0 ], [ 647121.825099997222424, 637724.506299998611212, 0.0 ], [ 647108.7820999994874, 637722.453299999237061, 0.0 ], [ 647094.012999996542931, 637720.040300000458956, 0.0 ], [ 647081.624799996614456, 637718.19539999961853, 0.0 ], [ 647070.208800002932549, 637716.016399998217821, 0.0 ], [ 647064.979699999094009, 637714.803399998694658, 0.0 ], [ 647059.829800002276897, 637713.333399999886751, 0.0 ], [ 647056.158699996769428, 637712.097500000149012, 0.0 ], [ 647048.989600002765656, 637709.176399998366833, 0.0 ], [ 647044.633699998259544, 637706.848400000482798, 0.0 ], [ 647040.421599999070168, 637704.226500000804663, 0.0 ], [ 647031.483599998056889, 637698.088500000536442, 0.0 ], [ 647022.0675999969244, 637691.003600001335144, 0.0 ], [ 647014.43860000371933, 637685.784600000828505, 0.0 ], [ 646999.850599996745586, 637676.313700001686811, 0.0 ], [ 646988.365500003099442, 637669.700599998235703, 0.0 ], [ 646967.931400001049042, 637658.638700000941753, 0.0 ], [ 646947.341399997472763, 637647.906800001859665, 0.0 ], [ 646930.002300001680851, 637638.705800000578165, 0.0 ], [ 646913.664300002157688, 637629.9189000017941, 0.0 ], [ 646935.312700003385544, 637607.121800001710653, 0.0 ], [ 646791.054099999368191, 637480.239199999719858, 0.0 ], [ 646774.513199999928474, 637465.691300000995398, 0.0 ], [ 646761.520199999213219, 637454.263300001621246, 0.0 ], [ 646606.255999997258186, 637601.580600000917912, 0.0 ], [ 646601.601999998092651, 637602.534600000828505, 0.0 ], [ 646565.095200002193451, 637639.127700001001358, 0.0 ], [ 646545.390900000929832, 637663.338700000196695, 0.0 ], [ 646519.284400001168251, 637689.939699999988079, 0.0 ], [ 646510.939300000667572, 637714.410700000822544, 0.0 ], [ 646485.492899999022484, 637736.123700000345707, 0.0 ], [ 646483.679799996316433, 637734.910599999129772, 0.0 ], [ 646392.405500002205372, 637673.848999999463558, 0.0 ], [ 646288.05349999666214, 637579.578400000929832, 0.0 ], [ 646258.440600000321865, 637559.322399999946356, 0.0 ], [ 646201.035400003194809, 637543.869600001722574, 0.0 ], [ 646180.23929999768734, 637541.976599998772144, 0.0 ], [ 646155.603200003504753, 637536.748599998652935, 0.0 ], [ 646146.750200003385544, 637536.806699998676777, 0.0 ], [ 646139.203100003302097, 637539.381700001657009, 0.0 ], [ 646132.568999998271465, 637537.238699998706579, 0.0 ], [ 646125.622100003063679, 637531.435699999332428, 0.0 ], [ 646104.776000000536442, 637523.160799998790026, 0.0 ], [ 646100.225900001823902, 637527.598700001835823, 0.0 ], [ 646076.25789999961853, 637520.932799998670816, 0.0 ], [ 646063.038900002837181, 637510.339800000190735, 0.0 ], [ 646053.925999999046326, 637501.117899999022484, 0.0 ], [ 646035.520900003612041, 637496.591899998486042, 0.0 ], [ 646024.880800001323223, 637495.037900000810623, 0.0 ], [ 646008.621699996292591, 637494.359999999403954, 0.0 ], [ 645997.433700002729893, 637488.484999999403954, 0.0 ], [ 645974.750699996948242, 637482.901000000536442, 0.0 ], [ 645944.842500001192093, 637481.037099998444319, 0.0 ], [ 645933.352399997413158, 637479.455099999904633, 0.0 ], [ 645921.040399998426437, 637479.055100001394749, 0.0 ], [ 645915.466399997472763, 637480.844200000166893, 0.0 ], [ 645907.304499998688698, 637478.290100000798702, 0.0 ], [ 645904.517700001597404, 637454.663199998438358, 0.0 ], [ 645897.852700002491474, 637454.183200001716614, 0.0 ], [ 645892.892800003290176, 637451.424100000411272, 0.0 ], [ 645877.406800001859665, 637452.736200001090765, 0.0 ], [ 645864.007799997925758, 637451.085200000554323, 0.0 ], [ 645850.55290000140667, 637446.447200000286102, 0.0 ], [ 645848.491800002753735, 637459.460200000554323, 0.0 ], [ 645842.190800003707409, 637460.414200000464916, 0.0 ], [ 645836.531800001859665, 637459.990100000053644, 0.0 ], [ 645826.922799997031689, 637463.063200000673532, 0.0 ], [ 645807.531000003218651, 637455.550200000405312, 0.0 ], [ 645802.130900003015995, 637457.795099999755621, 0.0 ], [ 645788.565999999642372, 637448.078200001269579, 0.0 ], [ 645783.94990000128746, 637447.050599999725819, 0.0 ], [ 645783.568400003015995, 637447.424100000411272, 0.0 ], [ 645781.694200001657009, 637449.259700000286102, 0.0 ], [ 645764.864200003445148, 637465.741900000721216, 0.0 ], [ 645766.801299996674061, 637467.663899999111891, 0.0 ], [ 645754.64360000193119, 637481.209399998188019, 0.0 ], [ 645750.061599999666214, 637515.552200000733137, 0.0 ], [ 645756.697700001299381, 637553.021499998867512, 0.0 ], [ 645745.678700000047684, 637581.629299998283386, 0.0 ], [ 645712.862499997019768, 637614.343899998813868, 0.0 ], [ 645684.575800001621246, 637662.496399998664856, 0.0 ], [ 645673.056900002062321, 637690.854200001806021, 0.0 ], [ 645661.865299999713898, 637725.290000000037253, 0.0 ], [ 645660.639799997210503, 637781.68019999936223, 0.0 ], [ 645672.17960000038147, 637841.431099999696016, 0.0 ], [ 645672.675499998033047, 637875.180799998342991, 0.0 ], [ 645660.656499996781349, 637905.06980000063777, 0.0 ], [ 645631.259099997580051, 637963.893800001591444, 0.0 ], [ 645670.2246999964118, 637986.179699998348951, 0.0 ], [ 645520.941299997270107, 638015.020799998193979, 0.0 ], [ 645485.950199998915195, 638073.422600001096725, 0.0 ], [ 645524.040299996733665, 638102.129900000989437, 0.0 ], [ 645482.393200002610683, 638159.624499998986721, 0.0 ], [ 645477.876800000667572, 638166.405299998819828, 0.0 ], [ 645511.153800003230572, 638198.940200001001358, 0.0 ], [ 645510.887999996542931, 638200.783900000154972, 0.0 ], [ 645533.619000002741814, 638227.598799999803305, 0.0 ], [ 645557.488499999046326, 638272.695099998265505, 0.0 ], [ 645549.996500000357628, 638336.928100001066923, 0.0 ], [ 645544.711099997162819, 638371.958399999886751, 0.0 ], [ 645413.699299998581409, 638347.849199999123812, 0.0 ], [ 645413.636600002646446, 638350.34910000115633, 0.0 ], [ 645399.9341000020504, 638344.988099999725819, 0.0 ], [ 645397.215199999511242, 638347.690999999642372, 0.0 ], [ 645421.575300000607967, 638602.410700000822544, 0.0 ], [ 645424.266000002622604, 638705.378699999302626, 0.0 ], [ 645432.394500002264977, 638805.628899998962879, 0.0 ], [ 645435.092600002884865, 638848.988299999386072, 0.0 ], [ 645475.668099999427795, 638868.696199998259544, 0.0 ], [ 645506.822200000286102, 638883.840300001204014, 0.0 ], [ 645542.186099998652935, 638843.954300001263618, 0.0 ], [ 645568.112899996340275, 638799.895100001245737, 0.0 ], [ 645579.491899996995926, 638766.162599999457598, 0.0 ], [ 645592.870099999010563, 638738.304999999701977, 0.0 ], [ 645609.061099998652935, 638708.916499998420477, 0.0 ], [ 645628.346699997782707, 638670.403400000184774, 0.0 ], [ 645656.150399997830391, 638610.360399998724461, 0.0 ], [ 645667.99719999730587, 638585.018199998885393, 0.0 ], [ 645690.143299996852875, 638536.864999998360872, 0.0 ], [ 645707.147900000214577, 638497.336100000888109, 0.0 ], [ 645724.168399997055531, 638454.994699999690056, 0.0 ], [ 645740.813799999654293, 638413.434599999338388, 0.0 ], [ 645772.257700003683567, 638358.985599998384714, 0.0 ], [ 645794.84009999781847, 638322.019799999892712, 0.0 ], [ 645814.359599999967031, 638288.08500000089407, 0.0 ], [ 645835.692100003361702, 638248.322299998253584, 0.0 ], [ 645846.405199997127056, 638165.136599998921156, 0.0 ], [ 645890.459299996495247, 638100.267400000244379, 0.0 ], [ 645936.906000003218651, 638021.398600000888109, 0.0 ], [ 645959.175800003111362, 637984.495299998670816, 0.0 ], [ 645997.07940000295639, 638003.749699998646975, 0.0 ], [ 646039.373099997639656, 638028.520100001245737, 0.0 ], [ 646126.134900003671646, 638054.342700000852346, 0.0 ], [ 646196.459200002253056, 638080.647799998521805, 0.0 ], [ 646270.33049999922514, 638106.718800000846386, 0.0 ], [ 646332.748599998652935, 638135.772999998182058, 0.0 ], [ 646393.792000003159046, 638160.045699998736382, 0.0 ], [ 646411.288999997079372, 638183.422600001096725, 0.0 ], [ 646433.380599997937679, 638201.159499999135733, 0.0 ], [ 646464.313299998641014, 638238.350299999117851, 0.0 ], [ 646440.686499997973442, 638254.925500001758337, 0.0 ], [ 646394.02759999781847, 638280.341600000858307, 0.0 ], [ 646352.431699998676777, 638301.352000001817942, 0.0 ], [ 646233.471400000154972, 638239.151000000536442, 0.0 ], [ 646213.545999996364117, 638269.038899999111891, 0.0 ], [ 646203.764899998903275, 638269.178399998694658, 0.0 ], [ 646189.839400000870228, 638301.395300000905991, 0.0 ], [ 646178.742399998009205, 638328.518699999898672, 0.0 ], [ 646169.942400000989437, 638354.392499998211861, 0.0 ], [ 646163.264799997210503, 638403.922499999403954, 0.0 ], [ 646157.554499998688698, 638463.624499998986721, 0.0 ], [ 646154.861299999058247, 638512.451799999922514, 0.0 ], [ 646185.704099997878075, 638518.61179999995511, 0.0 ], [ 646230.592600002884865, 638532.991999998688698, 0.0 ], [ 646284.448399998247623, 638559.935699999332428, 0.0 ], [ 646280.040700003504753, 638570.638199999928474, 0.0 ], [ 646282.509300000965595, 638572.122900001704693, 0.0 ], [ 646272.240099996328354, 638603.714999999850988, 0.0 ], [ 646268.065399996936321, 638627.620799999684095, 0.0 ], [ 646258.387800000607967, 638675.587799999862909, 0.0 ], [ 646252.571800000965595, 638706.071299999952316, 0.0 ], [ 646169.388099998235703, 638679.202199999243021, 0.0 ], [ 646163.487800002098083, 638629.811299998313189, 0.0 ], [ 646164.145499996840954, 638617.374000001698732, 0.0 ], [ 646090.37049999833107, 638570.552999999374151, 0.0 ], [ 646085.762000001966953, 638563.115100000053644, 0.0 ], [ 646060.217699997127056, 638543.674699999392033, 0.0 ], [ 646043.312799997627735, 638534.172699999064207, 0.0 ], [ 646033.964800000190735, 638569.968299999833107, 0.0 ], [ 645994.715599998831749, 638566.041700001806021, 0.0 ], [ 645919.955399997532368, 638525.767499998211861, 0.0 ], [ 645866.600100003182888, 638495.042599998414516, 0.0 ], [ 645856.488499999046326, 638513.650600001215935, 0.0 ], [ 645839.452100001275539, 638558.523200001567602, 0.0 ], [ 645827.509400002658367, 638602.412000000476837, 0.0 ], [ 645816.364600002765656, 638638.175999999046326, 0.0 ], [ 645799.126000002026558, 638674.658100001513958, 0.0 ], [ 645782.217299997806549, 638697.171500001102686, 0.0 ], [ 645764.478900000452995, 638731.372299998998642, 0.0 ], [ 645754.864799998700619, 638771.558400001376867, 0.0 ], [ 645753.45830000191927, 638774.589400000870228, 0.0 ], [ 645725.029399998486042, 638835.476100001484156, 0.0 ], [ 645749.200099997222424, 638843.166400000452995, 0.0 ], [ 645749.808899998664856, 638848.400800000876188, 0.0 ], [ 645802.806000001728535, 638869.281899999827147, 0.0 ], [ 645753.844700001180172, 638940.400499999523163, 0.0 ], [ 645724.277099996805191, 638986.412200000137091, 0.0 ], [ 645716.588600002229214, 638993.661299999803305, 0.0 ], [ 645714.791199997067451, 638999.333000000566244, 0.0 ], [ 645709.226499997079372, 639016.800999999046326, 0.0 ], [ 645764.664399996399879, 639011.151299998164177, 0.0 ], [ 645773.241999998688698, 639013.417899999767542, 0.0 ], [ 645850.039399996399879, 639005.458500001579523, 0.0 ], [ 645936.039899997413158, 638995.046799998730421, 0.0 ], [ 645995.57150000333786, 638987.835400000214577, 0.0 ], [ 646023.711999997496605, 638986.588700000196695, 0.0 ], [ 646052.055699996650219, 638985.326299998909235, 0.0 ], [ 646103.024400003254414, 638983.066799998283386, 0.0 ], [ 646139.414899997413158, 638981.446199998259544, 0.0 ], [ 646179.617799997329712, 638979.654199998825788, 0.0 ], [ 646212.742700003087521, 638978.173700001090765, 0.0 ], [ 646260.726999998092651, 638976.038899999111891, 0.0 ], [ 646261.200599998235703, 639066.241399999707937, 0.0 ], [ 646260.882299996912479, 639116.303399998694658, 0.0 ], [ 646261.281499996781349, 639175.006099998950958, 0.0 ], [ 646260.665399998426437, 639231.177400000393391, 0.0 ], [ 646259.815399996936321, 639283.270700000226498, 0.0 ], [ 646329.657600000500679, 639291.513300001621246, 0.0 ], [ 646381.953199997544289, 639298.394499998539686, 0.0 ], [ 646426.389700002968311, 639304.227800000458956, 0.0 ], [ 646481.732199996709824, 639311.624899998307228, 0.0 ], [ 646464.590700000524521, 639451.32490000128746, 0.0 ], [ 646607.774499997496605, 639471.888599999248981, 0.0 ], [ 646601.921099998056889, 639552.934300001710653, 0.0 ], [ 646591.632799997925758, 639612.870000001043081, 0.0 ], [ 646583.938400000333786, 639672.243599999696016, 0.0 ], [ 646583.576499998569489, 639675.035300001502037, 0.0 ], [ 646629.383500002324581, 639684.549499999731779, 0.0 ], [ 646631.766599997878075, 639744.778200000524521, 0.0 ], [ 646671.663800001144409, 639755.464200001209974, 0.0 ], [ 646791.946199998259544, 639787.676300000399351, 0.0 ], [ 646805.293200001120567, 639791.250199999660254, 0.0 ], [ 646806.307199999690056, 639791.522199999541044, 0.0 ], [ 647041.181999996304512, 639854.432300001382828, 0.0 ], [ 647059.401000000536442, 639859.304400000721216, 0.0 ], [ 647070.070000000298023, 639862.165300000458956, 0.0 ], [ 647164.925499998033047, 639887.560199998319149, 0.0 ], [ 647169.905500002205372, 639887.071299999952316, 0.0 ], [ 647170.211300000548363, 639887.005699999630451, 0.0 ] ] ] ] } }
+]
+}
diff --git a/popgetter_tests/test_assets.py b/popgetter_tests/test_assets.py
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/popgetter_tests/test_assets.py
@@ -0,0 +1,1 @@
+
diff --git a/popgetter_tests/uk.py b/popgetter_tests/uk.py
new file mode 100644
index 0000000..791544e
--- /dev/null
+++ b/popgetter_tests/uk.py
@@ -0,0 +1,2 @@
+from popgetter.assets import uk
+