From b03ee7032b2ea2d4d22ab7ec1346b7c9331cfc17 Mon Sep 17 00:00:00 2001 From: Petri Hienonen Date: Wed, 29 Oct 2025 15:18:30 +0200 Subject: Initial commit --- README.adoc | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 README.adoc (limited to 'README.adoc') diff --git a/README.adoc b/README.adoc new file mode 100644 index 0000000..ae788c8 --- /dev/null +++ b/README.adoc @@ -0,0 +1,140 @@ += Housing selector +:description: Documentation for the project +:sectanchors: +:url-repo: https://git.tammi.cc/housing.git + +SVG and WGS94 https://www.w3.org/TR/SVG11/coords.html + +The project consists of three parts: + +1. Application (native web browser) +2. CouchDB and S3 +3. Scraper (Golang) + +The developments tools are listed in flake.nix and development environment can be start with command: + +[source,bash] +---- +nix develop +---- + +== Application + +There is a development server `server.js` that serves the app and static assets. +The application resides in app directory. + +[%header,format=tsv] +|=== +include::app/requirements.tsv[] +|=== + +Run (the development server) with: + +[source,bash] +---- +node server.js +---- + +Static assets are deployed to web server. + +== Scraper runner + +Golang is used to fetch the data to CouchDB. +The runner resides in scrape directory. + +[%header,format=tsv] +|=== +include::scrape/requirements.tsv[] +|=== + +The running will require some cookies to be gotten from a web browser. Run with: + +[source,bash] +---- +export OTA_TOKEN=... +export OTA_CUID=... +export OTA_LOADED=... +export PHPSESSID=... + +go run main.go +---- + +== Next steps + +- Implement additional map features, "metro", "pikaraitiotie", "koulut", "kaupat". +- Add possibility to color districts based on data such as crime rate, etc. +- Make the weight calculation work. +- Fix the map zoom and initial viewport +- Add links to house details on the service. Add additional images +- Parse more data from data source. Now only overview is parsed. +- Images on modal open on click to a new window +- Visual programming? Value function description with javascript? +- Notifications to user on new houses +- Sharing via URL +- Real support for MultiLineString in geometry + +== Analysis Data processing + +List of open WFS data sources are in: +https://kartta.hel.fi/avoindata/dokumentit/Aineistolista_wfs_avoindata.html + +WFS Capabilities can be found from: +https://kartta.hel.fi/ws/geoserver/avoindata/wfs?version=2.0.0&request=GetCapabilities + +The data can then be downloaded with CURL. + +=== Roads +[source,bash] +---- +# First download the full dataset +curl -X GET \ + "https://kartta.hel.fi/ws/geoserver/avoindata/wfs?\ +service=WFS&\ +version=2.0.0&\ +request=GetFeature&\ +typeNames=avoindata:Liikennevaylat&\ +outputFormat=application/json" \ + -o liikennevaylat_full.geojson + +# Then filter with jq +jq '{ + type: .type, + features: [.features[] | select(.properties.alatyyppi == "Moottoriväylä")], + crs: .crs +}' liikennevaylat_full.geojson > moottorivaylat.geojson +---- + +[source,bash] +---- +jq '[.features[].properties.paatyyppi | select(. != null)] | unique' liikennevaylat_full.geojson +---- + +=== Train stations +[source,bash] +---- +curl -X GET \ + "https://kartta.hel.fi/ws/geoserver/avoindata/wfs?\ +service=WFS&\ +version=2.0.0&\ +request=GetFeature&\ +typeNames=avoindata:Seutukartta_liikenne_juna_asema&\ +outputFormat=application/json&\ +srsName=EPSG:4326" \ + -o juna_asemat.geojson +---- + + +=== Railway lines + +[source,bash] +---- +curl -X GET \ + "https://kartta.hel.fi/ws/geoserver/avoindata/wfs?\ +service=WFS&\ +version=2.0.0&\ +request=GetFeature&\ +typeNames=avoindata:Seutukartta_liikenne_juna_rata&\ +outputFormat=application/json&\ +srsName=EPSG:4326" \ + -o juna_radat.geojson +---- -- cgit v1.2.3-70-g09d2