Advertisement
Guest User

Untitled

a guest
Oct 13th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. WITH city AS (
  2. SELECT
  3. layers.name as osm_name,
  4. layers.all_tags AS osm_tags,
  5. (SELECT tags.value FROM UNNEST(all_tags) as tags WHERE tags.key = 'admin_level') as admin_level,
  6. layers.geometry AS geometry
  7. FROM `bigquery-public-data.geo_openstreetmap.layers` AS layers
  8. WHERE layers.partnum = `bigquery-public-data.geo_openstreetmap.name2partnum`('boundary-administrative')
  9. AND EXISTS(SELECT tags.value FROM UNNEST(all_tags) as tags WHERE tags.key = 'name' and tags.value='New York')
  10. AND EXISTS(SELECT tags.value FROM UNNEST(all_tags) as tags WHERE tags.key = 'place' and tags.value='city')
  11. ),
  12. city_buildings AS (
  13. SELECT
  14. layers.*
  15. FROM `bigquery-public-data.geo_openstreetmap.layers` AS layers, city
  16. WHERE layers.partnum = `bigquery-public-data.geo_openstreetmap.name2partnum`('building')
  17. AND ST_DWITHIN(city.geometry, layers.geometry, 0)
  18. -- ignore incorrect geometries with wrong orientation (see GeoJSON RFC 7946)
  19. AND ST_AREA(layers.geometry) <= 1E10
  20. ),
  21. city_parks AS (
  22. SELECT
  23. layers.*
  24. FROM `bigquery-public-data.geo_openstreetmap.layers` AS layers JOIN UNNEST(all_tags) AS tags, city
  25. WHERE layers.partnum = `bigquery-public-data.geo_openstreetmap.name2partnum`('leisure-park')
  26. AND tags.value = 'Central Park'
  27. AND ST_DWITHIN(city.geometry, layers.geometry, 0)
  28. -- ignore incorrect geometries with wrong orientation (see GeoJSON RFC 7946)
  29. AND ST_AREA(layers.geometry) <= 1E10
  30. ),
  31.  
  32. city_buildings_parks AS (
  33. SELECT
  34. -- distance histogram bin size is equal to 30 meters
  35. 30*round(min(ST_DISTANCE(city_buildings.geometry, city_parks.geometry))/30) as distance_park,
  36. ST_GEOHASH(ST_CENTROID(city_buildings.geometry)) AS building_geohash
  37. FROM city_buildings, city_parks
  38. GROUP BY 2
  39. )
  40. SELECT COUNT(building_geohash) FROM city_buildings_parks WHERE distance_park <= 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement