From 68e40a1e463d0e660f2cc3f88914ab5fe09fab2a Mon Sep 17 00:00:00 2001 From: Ed Chalstrey Date: Thu, 14 Apr 2022 16:33:08 +0100 Subject: [PATCH] remove openTOID stuff from this particular branch --- etl/README.md | 13 -------- etl/convert_opentoid_bng_latlon.py | 31 ------------------- etl/load_coordinates.sh | 48 ----------------------------- etl/requirements.txt | 1 - etl/screenshot/OpenTOID.png | Bin 38607 -> 0 bytes 5 files changed, 93 deletions(-) delete mode 100644 etl/convert_opentoid_bng_latlon.py delete mode 100644 etl/load_coordinates.sh delete mode 100644 etl/screenshot/OpenTOID.png diff --git a/etl/README.md b/etl/README.md index 99c9768e..f6e478b5 100644 --- a/etl/README.md +++ b/etl/README.md @@ -25,19 +25,6 @@ The building geometries are sourced from Ordnance Survey (OS) MasterMap (Topogra 4. You should be then able to check out your basket and download the files. Note: there may be multiple `.zip` files to download for MasterMap due to the size of the dataset. 6. Unzip the MasterMap `.zip` files and move all the `.gz` files from each to a single folder in a convenient location. We will use this folder in later steps. -## Downloading OS Open TOID data - -1. Navigate to the download page at https://osdatahub.os.uk/downloads/open/OpenTOID -2. Select the area of the map you require location data for (e.g. the squares covering London) and download the data in CSV format: - -![](screenshot/OpenTOID.png) - -3. Unzip the `.zip` file(s) to get the CSV files and move them to a single folder in a convenient location. We will use this folder in later steps. - -# :penguin: Making data available to Ubuntu - -Before creating or updating a Colouring London database, you'll need to make sure the downloaded OS files are available to the Ubuntu machine where the database is hosted. If you are using Virtualbox, you could host share folder(s) containing the OS files with the VM (e.g. [see these instructions for Mac](https://medium.com/macoclock/share-folder-between-macos-and-ubuntu-4ce84fb5c1ad)). - # :new_moon: Creating a Colouring London database from scratch ## Prerequisites diff --git a/etl/convert_opentoid_bng_latlon.py b/etl/convert_opentoid_bng_latlon.py deleted file mode 100644 index c2893edd..00000000 --- a/etl/convert_opentoid_bng_latlon.py +++ /dev/null @@ -1,31 +0,0 @@ -"""Convert BNG values in OpenTOID data to latitude/longitude""" -import csv -import glob -import os -import sys -from convertbng.cutil import convert_lonlat -from pandas import read_csv - - -csv.field_size_limit(sys.maxsize) - - -def main(opentoid_path): - ot_paths = sorted(glob.glob(os.path.join(opentoid_path, "*.csv"))) - for ot_path in ot_paths: - convert_opentoid_coordinates(ot_path) - - -def convert_opentoid_coordinates(ot_path): - """Overwrite the input csv, adding the longitute/latitude from eastings/northings""" - output_path = str(ot_path).replace(".csv", "_converted.csv") - ot_data = read_csv(ot_path) - ot_data['longitude'], ot_data['latitude'] = convert_lonlat(ot_data['EASTING'], ot_data['NORTHING']) - ot_data.to_csv(output_path, index=False) - - -if __name__ == '__main__': - if len(sys.argv) != 2: - print("Usage: convert_opentoid_bng_latlon.py ./path/to/opentoid/dir") - exit(-1) - main(sys.argv[1]) diff --git a/etl/load_coordinates.sh b/etl/load_coordinates.sh deleted file mode 100644 index 9b0e852a..00000000 --- a/etl/load_coordinates.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash - -# Assign latitude and longitude to buildings with OpenTOID data -# - assume postgres connection details are set in the environment using PGUSER, PGHOST etc. - -: ${1?"Usage: $0 ./path/to/opentoid/dir"} - -opentoid_dir=$1 - -# Move this to 001.core.up.sql if needed, or otherwise delete as temp table -echo "Creating table for open_toid coordinates..." -psql -c "DROP TABLE IF EXISTS open_toid" -psql -c "CREATE TABLE open_toid ( - toid varchar, - version_number float, - version_date date, - source_product varchar, - easting float, - northing float, - longitude float, - latitude float -);" - -echo "Loading Open TOID CSV(s) to temporary table..." -find $opentoid_dir -type f -name '*_converted.csv' \ --printf "$opentoid_dir/%f\n" | \ -parallel \ -cat {} '|' psql -c "\"COPY open_toid ( toid, version_number, version_date, source_product, easting, northing, longitude, latitude ) FROM stdin WITH CSV HEADER;\"" - -echo "Updating the buildings table with coordinates..." -psql -c "UPDATE buildings - SET location_latitude = open_toid.latitude, - location_longitude = open_toid.longitude - FROM open_toid - WHERE open_toid.toid = buildings.ref_toid -;" - -# Add these columns here rather than in 001.core.up.sql for legacy reasons -psql -c "ALTER TABLE geometries ADD longitude float;" -psql -c "ALTER TABLE geometries ADD latitude float;" - -echo "Updating the geometries table with coordinates..." -psql -c "UPDATE geometries - SET latitude = open_toid.latitude, - longitude = open_toid.longitude - FROM open_toid - WHERE open_toid.toid = geometries.source_id -;" \ No newline at end of file diff --git a/etl/requirements.txt b/etl/requirements.txt index fd1fbde9..55188359 100644 --- a/etl/requirements.txt +++ b/etl/requirements.txt @@ -5,4 +5,3 @@ psycopg2==2.7.5 shapely==1.7 retrying==1.3.3 requests==2.23.0 -convertbng==0.6.25 \ No newline at end of file diff --git a/etl/screenshot/OpenTOID.png b/etl/screenshot/OpenTOID.png deleted file mode 100644 index d550be7986de9572d558c6b470858b7c497576c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38607 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