mirror of
https://github.com/zyphlar/sonoma-import.git
synced 2024-03-08 15:07:48 +00:00
change table names accordingly
This commit is contained in:
parent
d542cf9da6
commit
b03d53b099
13
README.md
13
README.md
|
@ -69,6 +69,8 @@ Debian (shp2pgsql is included in postgis)
|
||||||
- `git clone --recursive https://github.com/pnorman/ogr2osm`
|
- `git clone --recursive https://github.com/pnorman/ogr2osm`
|
||||||
- Do NOT install the osgeo package from pip, it's empty and will cause ogr import errors.
|
- Do NOT install the osgeo package from pip, it's empty and will cause ogr import errors.
|
||||||
|
|
||||||
|
- Restart postgres and then inside the `openstreetmap` database you created, run: `CREATE EXTENSION postgis; create extension hstore;`
|
||||||
|
|
||||||
## Running
|
## Running
|
||||||
|
|
||||||
- We are assuming that the county data uses a WGS84 aka EPSG:4326 geographical projection, which was true as of last check and is also what OSM uses.
|
- We are assuming that the county data uses a WGS84 aka EPSG:4326 geographical projection, which was true as of last check and is also what OSM uses.
|
||||||
|
@ -76,13 +78,14 @@ Debian (shp2pgsql is included in postgis)
|
||||||
|
|
||||||
```
|
```
|
||||||
cd original_data
|
cd original_data
|
||||||
shp2pgsql -s 4326 -I Parcels__Public_.shp | psql -d openstreetmap -U openstreetmap -W
|
|
||||||
shp2pgsql -s 4326 -I Sonoma_County_Building_Outlines.shp | psql -d openstreetmap -U openstreetmap -W
|
shp2pgsql -s 4326 -I Parcels_Public_Shapefile.shp | psql -d openstreetmap -U openstreetmap -W
|
||||||
|
shp2pgsql -s 4326 -I Buildings.shp | psql -d openstreetmap -U openstreetmap -W
|
||||||
osm2pgsql -d openstreetmap -c --prefix son --slim --extra-attributes --hstore --latlong norcal-latest.osm.pbf -U openstreetmap -W -H localhost -P 5432
|
osm2pgsql -d openstreetmap -c --prefix son --slim --extra-attributes --hstore --latlong norcal-latest.osm.pbf -U openstreetmap -W -H localhost -P 5432
|
||||||
ogr2ogr -f "PostgreSQL" PG:"host=localhost dbname=openstreetmap user=openstreetmap port=5432 password=openstreetmap" "santa-rosa-boundary.geojson"
|
ogr2ogr -f "PostgreSQL" PG:"host=localhost dbname=openstreetmap user=openstreetmap port=5432 password=openstreetmap" "santa-rosa-boundary.geojson"
|
||||||
```
|
```
|
||||||
|
|
||||||
shp2pgsql should create tables like `parcels__public_` and `sonoma_county_building_outlines`.
|
shp2pgsql should create tables like `parcels_public_shapefile` and `buildings`.
|
||||||
osm2pgsql should create tables like `son_polygon`.
|
osm2pgsql should create tables like `son_polygon`.
|
||||||
ogr2ogr should create a table `santa_rosa_boundary`.
|
ogr2ogr should create a table `santa_rosa_boundary`.
|
||||||
|
|
||||||
|
@ -149,7 +152,7 @@ Please ensure you are logged in under a dedicated import account with a user nam
|
||||||
|
|
||||||
```
|
```
|
||||||
shp2pgsql -s 4326 -I Parcels__Public_.shp | psql -d openstreetmap -U openstreetmap -W -h localhost -p 5432
|
shp2pgsql -s 4326 -I Parcels__Public_.shp | psql -d openstreetmap -U openstreetmap -W -h localhost -p 5432
|
||||||
shp2pgsql -s 4326 -I Sonoma_County_Building_Outlines.shp | psql -d openstreetmap -U openstreetmap -W -h localhost -p 5432
|
shp2pgsql -s 4326 -I Buildings.shp | psql -d openstreetmap -U openstreetmap -W -h localhost -p 5432
|
||||||
psql -d openstreetmap -U openstreetmap -W -h localhost -p 5432 -f osmquery-pgdump.sql
|
psql -d openstreetmap -U openstreetmap -W -h localhost -p 5432 -f osmquery-pgdump.sql
|
||||||
|
|
||||||
#unused
|
#unused
|
||||||
|
@ -175,7 +178,7 @@ out;
|
||||||
If using an Overpass -> QGIS -> Postgres dump, save it as `osmquery_buildings_pgdump.sql` for later.
|
If using an Overpass -> QGIS -> Postgres dump, save it as `osmquery_buildings_pgdump.sql` for later.
|
||||||
|
|
||||||
```
|
```
|
||||||
sonoma_county_building_outlines
|
buildings
|
||||||
"conflated" = FALSE
|
"conflated" = FALSE
|
||||||
|
|
||||||
osmosis --read-pgsql host="127.0.0.1" database="openstreetmap" user="openstreetmap" password="openstreetmap" outPipe.0=pg --dd inPipe.0=pg outPipe.0=dd --write-xml inPipe.0=dd file=output.osm
|
osmosis --read-pgsql host="127.0.0.1" database="openstreetmap" user="openstreetmap" password="openstreetmap" outPipe.0=pg --dd inPipe.0=pg outPipe.0=dd --write-xml inPipe.0=dd file=output.osm
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
-- - parse city and state as well for mailing
|
-- - parse city and state as well for mailing
|
||||||
|
|
||||||
-- add fields for OSM tags and data processing
|
-- add fields for OSM tags and data processing
|
||||||
ALTER TABLE sonoma_county_building_outlines
|
ALTER TABLE buildings
|
||||||
ADD COLUMN IF NOT EXISTS "addr:housenumber" text,
|
ADD COLUMN IF NOT EXISTS "addr:housenumber" text,
|
||||||
ADD COLUMN IF NOT EXISTS "addr:street" text,
|
ADD COLUMN IF NOT EXISTS "addr:street" text,
|
||||||
ADD COLUMN IF NOT EXISTS "addr:unit" text,
|
ADD COLUMN IF NOT EXISTS "addr:unit" text,
|
||||||
|
@ -15,11 +15,11 @@ ALTER TABLE sonoma_county_building_outlines
|
||||||
ADD COLUMN IF NOT EXISTS conflated boolean DEFAULT FALSE,
|
ADD COLUMN IF NOT EXISTS conflated boolean DEFAULT FALSE,
|
||||||
ADD COLUMN IF NOT EXISTS main boolean; -- is it the main building on the parcel?
|
ADD COLUMN IF NOT EXISTS main boolean; -- is it the main building on the parcel?
|
||||||
|
|
||||||
update sonoma_county_building_outlines set "addr:housenumber" = NULL, "addr:street" = NULL, "addr:unit" = NULL, "addr:city" = NULL, "addr:state" = NULL, usecode = NULL, cid = NULL, conflated = FALSE, main = FALSE;
|
update buildings set "addr:housenumber" = NULL, "addr:street" = NULL, "addr:unit" = NULL, "addr:city" = NULL, "addr:state" = NULL, usecode = NULL, cid = NULL, conflated = FALSE, main = FALSE;
|
||||||
|
|
||||||
-- create local geometry fields and validate geometries
|
-- create local geometry fields and validate geometries
|
||||||
UPDATE sonoma_county_building_outlines SET loc_geom = ST_MakeValid(geom);
|
UPDATE buildings SET loc_geom = ST_MakeValid(geom);
|
||||||
CREATE INDEX ON sonoma_county_building_outlines USING GIST (loc_geom);
|
CREATE INDEX ON buildings USING GIST (loc_geom);
|
||||||
|
|
||||||
-- added fields for the parcels table
|
-- added fields for the parcels table
|
||||||
ALTER TABLE parcels__public_
|
ALTER TABLE parcels__public_
|
||||||
|
@ -527,7 +527,7 @@ UPDATE parcels__public_ SET building_count = NULL WHERE building_count IS NOT NU
|
||||||
WITH bcounts AS (
|
WITH bcounts AS (
|
||||||
SELECT
|
SELECT
|
||||||
p.gid, COUNT(*)
|
p.gid, COUNT(*)
|
||||||
FROM sonoma_county_building_outlines AS b JOIN parcels__public_ AS p ON
|
FROM buildings AS b JOIN parcels__public_ AS p ON
|
||||||
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
||||||
GROUP BY p.gid
|
GROUP BY p.gid
|
||||||
|
@ -536,7 +536,7 @@ UPDATE parcels__public_ SET building_count = count
|
||||||
FROM bcounts WHERE bcounts.gid = parcels__public_.gid;
|
FROM bcounts WHERE bcounts.gid = parcels__public_.gid;
|
||||||
|
|
||||||
-- add addresses to buildings with simple 1:1 matches to parcels
|
-- add addresses to buildings with simple 1:1 matches to parcels
|
||||||
UPDATE sonoma_county_building_outlines SET "addr:housenumber" = NULL, "addr:street" = NULL;
|
UPDATE buildings SET "addr:housenumber" = NULL, "addr:street" = NULL;
|
||||||
WITH a AS (
|
WITH a AS (
|
||||||
SELECT
|
SELECT
|
||||||
b.gid,
|
b.gid,
|
||||||
|
@ -546,49 +546,49 @@ WITH a AS (
|
||||||
p."addr:city",
|
p."addr:city",
|
||||||
p."addr:state",
|
p."addr:state",
|
||||||
p.usecode
|
p.usecode
|
||||||
FROM sonoma_county_building_outlines AS b JOIN parcels__public_ AS p ON
|
FROM buildings AS b JOIN parcels__public_ AS p ON
|
||||||
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
||||||
WHERE p.building_count = 1 AND NOT p.repeating
|
WHERE p.building_count = 1 AND NOT p.repeating
|
||||||
)
|
)
|
||||||
UPDATE sonoma_county_building_outlines SET
|
UPDATE buildings SET
|
||||||
"addr:housenumber" = a."addr:housenumber",
|
"addr:housenumber" = a."addr:housenumber",
|
||||||
"addr:street" = a."addr:street",
|
"addr:street" = a."addr:street",
|
||||||
"addr:unit" = a."addr:unit",
|
"addr:unit" = a."addr:unit",
|
||||||
"addr:city" = a."addr:city",
|
"addr:city" = a."addr:city",
|
||||||
"addr:state" = a."addr:state",
|
"addr:state" = a."addr:state",
|
||||||
"usecode" = CAST( a.usecode as INTEGER ) -- the original data is VARYING
|
"usecode" = CAST( a.usecode as INTEGER ) -- the original data is VARYING
|
||||||
FROM a WHERE sonoma_county_building_outlines.gid = a.gid;
|
FROM a WHERE buildings.gid = a.gid;
|
||||||
|
|
||||||
--SELECT COUNT(*) FROM sonoma_county_building_outlines WHERE "addr:housenumber" IS NOT NULL OR "addr:street" IS NOT NULL;
|
--SELECT COUNT(*) FROM buildings WHERE "addr:housenumber" IS NOT NULL OR "addr:street" IS NOT NULL;
|
||||||
|
|
||||||
-- attempt to identify garages and sheds so they don't get addresses
|
-- attempt to identify garages and sheds so they don't get addresses
|
||||||
UPDATE sonoma_county_building_outlines SET main = NULL;
|
UPDATE buildings SET main = NULL;
|
||||||
-- sort the buildings on each parcel by size, but only where it's likely a garage/shed situation
|
-- sort the buildings on each parcel by size, but only where it's likely a garage/shed situation
|
||||||
WITH sizes AS (
|
WITH sizes AS (
|
||||||
SELECT
|
SELECT
|
||||||
p.gid AS pid,
|
p.gid AS pid,
|
||||||
b.gid AS bid,
|
b.gid AS bid,
|
||||||
row_number() OVER ( PARTITION BY p.gid ORDER BY ST_Area(b.loc_geom) DESC) AS size_order
|
row_number() OVER ( PARTITION BY p.gid ORDER BY ST_Area(b.loc_geom) DESC) AS size_order
|
||||||
FROM sonoma_county_building_outlines AS b JOIN parcels__public_ AS p ON
|
FROM buildings AS b JOIN parcels__public_ AS p ON
|
||||||
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
||||||
WHERE
|
WHERE
|
||||||
NOT p.repeating AND -- single parcels
|
NOT p.repeating AND -- single parcels
|
||||||
p.building_count IN (2,3) -- 2 or 3 buildings on parcel
|
p.building_count IN (2,3) -- 2 or 3 buildings on parcel
|
||||||
ORDER BY p.gid ASC
|
ORDER BY p.gid ASC
|
||||||
) UPDATE sonoma_county_building_outlines SET main = CASE
|
) UPDATE buildings SET main = CASE
|
||||||
WHEN size_order = 1 THEN TRUE
|
WHEN size_order = 1 THEN TRUE
|
||||||
WHEN size_order > 1 THEN FALSE
|
WHEN size_order > 1 THEN FALSE
|
||||||
ELSE NULL
|
ELSE NULL
|
||||||
END
|
END
|
||||||
FROM sizes WHERE sizes.bid = sonoma_county_building_outlines.gid;
|
FROM sizes WHERE sizes.bid = buildings.gid;
|
||||||
|
|
||||||
-- now assign addresses to main buildings on parcels with outbuildings
|
-- now assign addresses to main buildings on parcels with outbuildings
|
||||||
WITH a AS (
|
WITH a AS (
|
||||||
SELECT
|
SELECT
|
||||||
b.gid, p."addr:housenumber", p."addr:street", p.usecode
|
b.gid, p."addr:housenumber", p."addr:street", p.usecode
|
||||||
FROM sonoma_county_building_outlines AS b JOIN parcels__public_ AS p ON
|
FROM buildings AS b JOIN parcels__public_ AS p ON
|
||||||
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
||||||
WHERE
|
WHERE
|
||||||
|
@ -596,11 +596,11 @@ WITH a AS (
|
||||||
AND NOT p.repeating
|
AND NOT p.repeating
|
||||||
AND b.main -- is main building
|
AND b.main -- is main building
|
||||||
)
|
)
|
||||||
UPDATE sonoma_county_building_outlines SET
|
UPDATE buildings SET
|
||||||
"addr:housenumber" = a."addr:housenumber",
|
"addr:housenumber" = a."addr:housenumber",
|
||||||
"addr:street" = a."addr:street",
|
"addr:street" = a."addr:street",
|
||||||
"usecode" = CAST( a.usecode as INTEGER ) -- the original data is VARYING
|
"usecode" = CAST( a.usecode as INTEGER ) -- the original data is VARYING
|
||||||
FROM a WHERE sonoma_county_building_outlines.gid = a.gid;
|
FROM a WHERE buildings.gid = a.gid;
|
||||||
|
|
||||||
|
|
||||||
-- TODO: here is where the first real 226 is added
|
-- TODO: here is where the first real 226 is added
|
||||||
|
@ -609,7 +609,7 @@ FROM a WHERE sonoma_county_building_outlines.gid = a.gid;
|
||||||
-- get a count of outbuildings so we know how many addresses are intentionally unassigned
|
-- get a count of outbuildings so we know how many addresses are intentionally unassigned
|
||||||
-- SELECT
|
-- SELECT
|
||||||
-- COUNT(*)
|
-- COUNT(*)
|
||||||
-- FROM sonoma_county_building_outlines AS b JOIN parcels__public_ AS p ON
|
-- FROM buildings AS b JOIN parcels__public_ AS p ON
|
||||||
-- ST_Intersects(b.loc_geom,p.loc_geom) AND
|
-- ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
-- ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
-- ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
||||||
-- WHERE
|
-- WHERE
|
||||||
|
@ -619,9 +619,9 @@ FROM a WHERE sonoma_county_building_outlines.gid = a.gid;
|
||||||
|
|
||||||
-- result: 44090
|
-- result: 44090
|
||||||
|
|
||||||
--SELECT COUNT(*) FROM sonoma_county_building_outlines WHERE "addr:housenumber" IS NOT NULL OR "addr:street" IS NOT NULL;
|
--SELECT COUNT(*) FROM buildings WHERE "addr:housenumber" IS NOT NULL OR "addr:street" IS NOT NULL;
|
||||||
-- result: 123793
|
-- result: 123793
|
||||||
--SELECT COUNT(*) FROM sonoma_county_building_outlines WHERE "addr:housenumber" IS NULL AND "addr:street" IS NULL;
|
--SELECT COUNT(*) FROM buildings WHERE "addr:housenumber" IS NULL AND "addr:street" IS NULL;
|
||||||
-- result: 155217
|
-- result: 155217
|
||||||
|
|
||||||
-- try to assign multiple addresses from multiple parcels to single buildings
|
-- try to assign multiple addresses from multiple parcels to single buildings
|
||||||
|
@ -633,7 +633,7 @@ WITH addresses AS (
|
||||||
array_to_string( ARRAY_AGG(DISTINCT p."addr:housenumber"), ';') AS housenumber,
|
array_to_string( ARRAY_AGG(DISTINCT p."addr:housenumber"), ';') AS housenumber,
|
||||||
array_to_string( ARRAY_AGG(DISTINCT p."addr:street"), ';') AS street,
|
array_to_string( ARRAY_AGG(DISTINCT p."addr:street"), ';') AS street,
|
||||||
array_to_string( ARRAY_AGG(DISTINCT p.usecode), ';') AS usecode
|
array_to_string( ARRAY_AGG(DISTINCT p.usecode), ';') AS usecode
|
||||||
FROM sonoma_county_building_outlines AS b JOIN parcels__public_ AS p ON
|
FROM buildings AS b JOIN parcels__public_ AS p ON
|
||||||
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.9*ST_Area(b.loc_geom)
|
||||||
WHERE
|
WHERE
|
||||||
|
@ -642,14 +642,14 @@ WITH addresses AS (
|
||||||
b."addr:housenumber" IS NULL
|
b."addr:housenumber" IS NULL
|
||||||
GROUP BY p.gid
|
GROUP BY p.gid
|
||||||
)
|
)
|
||||||
UPDATE sonoma_county_building_outlines AS b SET
|
UPDATE buildings AS b SET
|
||||||
"addr:housenumber" = a.housenumber,
|
"addr:housenumber" = a.housenumber,
|
||||||
"addr:street" = a.street,
|
"addr:street" = a.street,
|
||||||
"usecode" = CAST( a.usecode as INTEGER ) -- the original data is VARYING
|
"usecode" = CAST( a.usecode as INTEGER ) -- the original data is VARYING
|
||||||
FROM addresses AS a
|
FROM addresses AS a
|
||||||
WHERE a.gid = b.gid;
|
WHERE a.gid = b.gid;
|
||||||
|
|
||||||
--select * from sonoma_county_building_outlines where "addr:housenumber" LIKE '%;%' OR "addr:street" LIKE '%;%';
|
--select * from buildings where "addr:housenumber" LIKE '%;%' OR "addr:street" LIKE '%;%';
|
||||||
-- result: 0, may not be working TODO
|
-- result: 0, may not be working TODO
|
||||||
|
|
||||||
-- try to identify addresses for buildings across multiple parcels: must be >50% on that parcel
|
-- try to identify addresses for buildings across multiple parcels: must be >50% on that parcel
|
||||||
|
@ -659,7 +659,7 @@ WITH addresses AS (
|
||||||
array_to_string( ARRAY_AGG(DISTINCT p."addr:housenumber"), ';') AS addrno,
|
array_to_string( ARRAY_AGG(DISTINCT p."addr:housenumber"), ';') AS addrno,
|
||||||
array_to_string( ARRAY_AGG(DISTINCT p."addr:street"), ';') AS street,
|
array_to_string( ARRAY_AGG(DISTINCT p."addr:street"), ';') AS street,
|
||||||
COUNT(*) AS count
|
COUNT(*) AS count
|
||||||
FROM sonoma_county_building_outlines AS b
|
FROM buildings AS b
|
||||||
JOIN parcels__public_ AS p ON
|
JOIN parcels__public_ AS p ON
|
||||||
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
ST_Intersects(b.loc_geom,p.loc_geom) AND
|
||||||
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.5*ST_Area(b.loc_geom)
|
ST_Area(ST_Intersection(b.loc_geom,p.loc_geom)) > 0.5*ST_Area(b.loc_geom)
|
||||||
|
@ -670,7 +670,7 @@ WITH addresses AS (
|
||||||
b.shape__are > 1000 -- assuming sqft
|
b.shape__are > 1000 -- assuming sqft
|
||||||
GROUP BY p.gid
|
GROUP BY p.gid
|
||||||
)
|
)
|
||||||
UPDATE sonoma_county_building_outlines AS b SET
|
UPDATE buildings AS b SET
|
||||||
"addr:housenumber" = addrno,
|
"addr:housenumber" = addrno,
|
||||||
"addr:street" = street
|
"addr:street" = street
|
||||||
FROM addresses AS a
|
FROM addresses AS a
|
||||||
|
@ -680,7 +680,7 @@ WHERE
|
||||||
-- TODO: here is where the second 226 is erroneously added
|
-- TODO: here is where the second 226 is erroneously added
|
||||||
-- the 0.9 slice of area is pretty liberal, we probably want closer to half?
|
-- the 0.9 slice of area is pretty liberal, we probably want closer to half?
|
||||||
|
|
||||||
--select * from sonoma_county_building_outlines where "addr:housenumber" LIKE '%;%' OR "addr:street" LIKE '%;%';
|
--select * from buildings where "addr:housenumber" LIKE '%;%' OR "addr:street" LIKE '%;%';
|
||||||
-- result: 0, may not be working TODO
|
-- result: 0, may not be working TODO
|
||||||
|
|
||||||
|
|
||||||
|
@ -691,14 +691,14 @@ WHERE
|
||||||
--
|
--
|
||||||
|
|
||||||
-- IF USING Overpass -> QGIS -> Postgres Dump:
|
-- IF USING Overpass -> QGIS -> Postgres Dump:
|
||||||
-- UPDATE sonoma_county_building_outlines AS b SET conflated = FALSE;
|
-- UPDATE buildings AS b SET conflated = FALSE;
|
||||||
-- UPDATE sonoma_county_building_outlines AS b SET conflated = TRUE
|
-- UPDATE buildings AS b SET conflated = TRUE
|
||||||
-- FROM osmquery_buildings_pgdump AS osm
|
-- FROM osmquery_buildings_pgdump AS osm
|
||||||
-- WHERE ST_Intersects(b.geom,osm.wkb_geometry)
|
-- WHERE ST_Intersects(b.geom,osm.wkb_geometry)
|
||||||
-- AND osm.building IS NOT NULL and osm.building != 'no';
|
-- AND osm.building IS NOT NULL and osm.building != 'no';
|
||||||
|
|
||||||
-- IF USING a direct OSM2PGSQL import i.e. norcal-latest.osm.pbf:
|
-- IF USING a direct OSM2PGSQL import i.e. norcal-latest.osm.pbf:
|
||||||
UPDATE sonoma_county_building_outlines AS b SET conflated = TRUE
|
UPDATE buildings AS b SET conflated = TRUE
|
||||||
FROM son_polygon AS osm
|
FROM son_polygon AS osm
|
||||||
WHERE ST_Intersects(b.geom,osm.way) --TODO: loc_geom
|
WHERE ST_Intersects(b.geom,osm.way) --TODO: loc_geom
|
||||||
AND osm.building IS NOT NULL and osm.building != 'no';
|
AND osm.building IS NOT NULL and osm.building != 'no';
|
||||||
|
@ -718,7 +718,7 @@ FROM son_polygon AS osm
|
||||||
-- "addr:street",
|
-- "addr:street",
|
||||||
-- "addr:unit",
|
-- "addr:unit",
|
||||||
-- (st_dump(loc_geom)).*
|
-- (st_dump(loc_geom)).*
|
||||||
-- FROM sonoma_county_building_outlines
|
-- FROM buildings
|
||||||
-- WHERE conflated
|
-- WHERE conflated
|
||||||
-- )
|
-- )
|
||||||
-- SELECT
|
-- SELECT
|
||||||
|
@ -751,7 +751,7 @@ FROM son_polygon AS osm
|
||||||
-- "addr:street",
|
-- "addr:street",
|
||||||
-- "addr:unit",
|
-- "addr:unit",
|
||||||
-- (st_dump(loc_geom)).*
|
-- (st_dump(loc_geom)).*
|
||||||
-- FROM sonoma_county_building_outlines
|
-- FROM buildings
|
||||||
-- WHERE NOT conflated --note: NOT
|
-- WHERE NOT conflated --note: NOT
|
||||||
-- )
|
-- )
|
||||||
-- SELECT
|
-- SELECT
|
||||||
|
@ -785,21 +785,21 @@ create index if not exists "geom_4326_idx" on VTATaz using GIST(geom_4326);
|
||||||
with hull as (
|
with hull as (
|
||||||
select ST_ConvexHull(ST_Collect(geom)) as geom from (
|
select ST_ConvexHull(ST_Collect(geom)) as geom from (
|
||||||
select geom
|
select geom
|
||||||
from "sonoma_county_building_outlines"
|
from "buildings"
|
||||||
) as geom)
|
) as geom)
|
||||||
delete from VTATaz
|
delete from VTATaz
|
||||||
using hull
|
using hull
|
||||||
where not ST_Intersects(geom_4326, hull.geom);
|
where not ST_Intersects(geom_4326, hull.geom);
|
||||||
|
|
||||||
-- Assign cluster to each data point
|
-- Assign cluster to each data point
|
||||||
update sonoma_county_building_outlines as t
|
update buildings as t
|
||||||
set cid = taggedThing.key
|
set cid = taggedThing.key
|
||||||
from (
|
from (
|
||||||
select (row_number() over (partition by sonoma_county_building_outlines.gid order by ST_Distance(sonoma_county_building_outlines.loc_geom, geom_4326))) as rn,
|
select (row_number() over (partition by buildings.gid order by ST_Distance(buildings.loc_geom, geom_4326))) as rn,
|
||||||
VTATaz.key, sonoma_county_building_outlines.gid
|
VTATaz.key, buildings.gid
|
||||||
from sonoma_county_building_outlines
|
from buildings
|
||||||
join VTATaz
|
join VTATaz
|
||||||
on ST_Intersects(sonoma_county_building_outlines.loc_geom, geom_4326)
|
on ST_Intersects(buildings.loc_geom, geom_4326)
|
||||||
) as taggedThing
|
) as taggedThing
|
||||||
where t.gid = taggedThing.gid and rn = 1;
|
where t.gid = taggedThing.gid and rn = 1;
|
||||||
|
|
||||||
|
@ -807,7 +807,7 @@ update sonoma_county_building_outlines as t
|
||||||
|
|
||||||
-- Delete all address data inside the Santa Rosa city limits, because the city's address data is better and already inserted as POIs
|
-- Delete all address data inside the Santa Rosa city limits, because the city's address data is better and already inserted as POIs
|
||||||
|
|
||||||
update sonoma_county_building_outlines set
|
update buildings set
|
||||||
"addr:housenumber" = NULL,
|
"addr:housenumber" = NULL,
|
||||||
"addr:unit" = NULL,
|
"addr:unit" = NULL,
|
||||||
"addr:street" = NULL,
|
"addr:street" = NULL,
|
||||||
|
@ -815,18 +815,18 @@ update sonoma_county_building_outlines set
|
||||||
"addr:state" = NULL
|
"addr:state" = NULL
|
||||||
from santa_rosa_boundary
|
from santa_rosa_boundary
|
||||||
where santa_rosa_boundary.admin_level = '8'
|
where santa_rosa_boundary.admin_level = '8'
|
||||||
and ST_Intersects(wkb_geometry, sonoma_county_building_outlines.loc_geom);
|
and ST_Intersects(wkb_geometry, buildings.loc_geom);
|
||||||
|
|
||||||
|
|
||||||
-- select * from sonoma_county_building_outlines join santa_rosa_boundary
|
-- select * from buildings join santa_rosa_boundary
|
||||||
-- on santa_rosa_boundary.admin_level = '8'
|
-- on santa_rosa_boundary.admin_level = '8'
|
||||||
-- and ST_Intersects(wkb_geometry, sonoma_county_building_outlines.loc_geom)
|
-- and ST_Intersects(wkb_geometry, buildings.loc_geom)
|
||||||
-- limit 1000;
|
-- limit 1000;
|
||||||
|
|
||||||
|
|
||||||
-- Drop TAZs that don't have any SC data in them
|
-- Drop TAZs that don't have any SC data in them
|
||||||
-- delete from VTATaz
|
-- delete from VTATaz
|
||||||
-- where key not in (
|
-- where key not in (
|
||||||
-- select distinct cid from sonoma_county_building_outlines
|
-- select distinct cid from buildings
|
||||||
-- );
|
-- );
|
||||||
|
|
||||||
|
|
4
trial.py
4
trial.py
|
@ -6,7 +6,7 @@ def filterLayer(layer):
|
||||||
#print(layer.GetName())
|
#print(layer.GetName())
|
||||||
|
|
||||||
#if layer.GetName() in ["buildingfootprint", "Site_Address_Points", "mergedbuildings", "namedparcels"]:
|
#if layer.GetName() in ["buildingfootprint", "Site_Address_Points", "mergedbuildings", "namedparcels"]:
|
||||||
if layer.GetName() in ["sonoma_county_building_outlines_filtered"]: # simplified_conflated_buildings # _filtered
|
if layer.GetName() in ["buildings_filtered"]: # simplified_conflated_buildings # _filtered
|
||||||
return layer
|
return layer
|
||||||
|
|
||||||
def filterTags(attrs):
|
def filterTags(attrs):
|
||||||
|
@ -31,7 +31,7 @@ def filterTags(attrs):
|
||||||
if "usecode" in attrs and attrs["usecode"] != "":
|
if "usecode" in attrs and attrs["usecode"] != "":
|
||||||
#tags["x_son_imp:usecode"] = int(attrs["usecode"]) #TODO: remove
|
#tags["x_son_imp:usecode"] = int(attrs["usecode"]) #TODO: remove
|
||||||
|
|
||||||
# SELECT count(*), usecode FROM public.sonoma_county_building_outlines group by usecode order by count desc;
|
# SELECT count(*), usecode FROM public.buildings group by usecode order by count desc;
|
||||||
# SELECT usecode, usecdesc, usectype FROM public.parcels__public_ group by usecode, usecdesc, usectype order by usecode asc;
|
# SELECT usecode, usecdesc, usectype FROM public.parcels__public_ group by usecode, usecdesc, usectype order by usecode asc;
|
||||||
|
|
||||||
# big categories to catch all
|
# big categories to catch all
|
||||||
|
|
2
trial.sh
2
trial.sh
|
@ -60,7 +60,7 @@ for intersects in false true; do
|
||||||
|
|
||||||
|
|
||||||
# Filter export data to each CID
|
# Filter export data to each CID
|
||||||
for layer in "sonoma_county_building_outlines"; do
|
for layer in "buildings"; do
|
||||||
psql -h $PGHOST -U $PGUSER -v "ON_ERROR_STOP=true" --echo-queries --command="create or replace view \"${layer}_filtered\" as select * from \"${layer}\" where cid=${cid} and ${intersectsQuery};" "${DBNAME}"
|
psql -h $PGHOST -U $PGUSER -v "ON_ERROR_STOP=true" --echo-queries --command="create or replace view \"${layer}_filtered\" as select * from \"${layer}\" where cid=${cid} and ${intersectsQuery};" "${DBNAME}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user