10. 几何练习

以下是我们到目前为止看到的所有函数的提醒。它们应该对练习有所帮助!

  • :command:`sum(expression)`聚合函数用于对一组记录进行求和并返回总和

  • :command:`count(expression)`聚合函数用于返回一组记录的大小

  • ST_GeometryType(geometry) 返回几何图形的类型

  • ST_NDims(geometry) 返回几何图形的维数

  • ST_SRID(geometry) 返回几何图形的空间参考标识号

  • ST_X(point) 返回点的 X 坐标

  • ST_Y(point) 返回点的 Y 坐标

  • ST_Length(linestring) 返回线串的长度

  • ST_StartPoint(geometry) 返回第一个坐标作为一个点

  • ST_EndPoint(geometry) 返回最后一个坐标作为一个点

  • ST_NPoints(geometry) 返回Linestring中坐标的数量

  • ST_Area(geometry) 返回多边形的面积

  • ST_NRings(geometry) 返回环的数量(通常为1,如果有孔则更多)

  • ST_ExteriorRing(polygon) 返回多边形的外环作为线串

  • ST_InteriorRingN(polygon, integer) 返回指定的多边形内部环作为线串

  • ST_Perimeter(geometry) 返回所有环的长度

  • ST_NumGeometries(multi/geomcollection) 返回集合中的部分数量

  • ST_GeometryN(geometry, integer) 返回集合的指定部分

  • ST_GeomFromText(text)`返回 ``geometry`

  • ST_AsText(geometry) 返回 WKT 格式的``text``

  • ST_AsEWKT(geometry) 返回 EWKT 格式的``text``

  • ST_GeomFromWKB(bytea) 返回 geometry

  • ST_AsBinary(geometry)`返回WKB格式的``bytea`

  • ST_AsEWKB(geometry) 返回 EWKB 格式的``bytea``

  • ST_GeomFromGML(text) 返回 geometry

  • ST_AsGML(geometry)`返回 GML 格式的``text`

  • ST_GeomFromKML(text) 返回 geometry

  • ST_AsKML(geometry) 返回 KML 格式的 text

  • ST_AsGeoJSON(geometry) 返回 JSON 格式的``text``

  • ST_AsSVG(geometry) 返回 SVG 格式的``text``

当然!我们有以下表可用:

  • nyc_census_blocks

    • blkid, popn_total, boroname, geom

  • nyc_streets

    • name, type, geom

  • nyc_subway_stations

    • name, geom

  • nyc_neighborhoods

    • name, boroname, geom

10.1. 练习

  • “West Village”社区的面积是多少?

    SELECT ST_Area(geom)
      FROM nyc_neighborhoods
      WHERE name = 'West Village';
    
    1044614.5296486
    

    注解

    面积以平方米为单位给出。要将面积转换为公顷,请将其除以10000。要将面积转换为英亩,请将其除以4047。

  • "佩勒姆街"的几何类型是什么?长度是多少?

    SELECT
       ST_GeometryType(geom),
       ST_Length(geom)
      FROM nyc_streets
      WHERE name = 'Pelham St';
    
    ST_MultiLineString
    50.323
    
  • "Broad St"地铁站的GeoJSON表示是什么?

    SELECT
     ST_AsGeoJSON(geom)
    FROM nyc_subway_stations
    WHERE name = 'Broad St';
    
    {"type":"Point",
     "crs":{"type":"name","properties":{"name":"EPSG:26918"}},
     "coordinates":[583571.905921312,4506714.341192182]}
    
  • **纽约市的街道总长度(公里)是多少?**(提示:空间数据的测量单位是米,一公里有1000米。)

    SELECT Sum(ST_Length(geom)) / 1000
      FROM nyc_streets;
    
    10418.9047172
    
  • 曼哈顿的面积是多少英亩? (提示:nyc_census_blocksnyc_neighborhoods``中都有一个 ``boroname。)

    SELECT Sum(ST_Area(geom)) / 4047
      FROM nyc_neighborhoods
      WHERE boroname = 'Manhattan';
    
    13965.3201224118
    

    或者...

    SELECT Sum(ST_Area(geom)) / 4047
      FROM nyc_census_blocks
      WHERE boroname = 'Manhattan';
    
    14601.3987215548
    
  • 最西的地铁站是哪个?

    SELECT ST_X(geom), name
      FROM nyc_subway_stations
      ORDER BY ST_X(geom)
      LIMIT 1;
    
    Tottenville
    
  • “哥伦布圆环”(又名哥伦布圆环)有多长?

    SELECT ST_Length(geom)
      FROM nyc_streets
      WHERE name = 'Columbus Cir';
    
    308.34199
    
  • 按类型总结,纽约市的街道长度是多少?

    SELECT type, Sum(ST_Length(geom)) AS length
    FROM nyc_streets
    GROUP BY type
    ORDER BY length DESC;
    
                           type                       |      length
    --------------------------------------------------+------------------
     residential                                      | 8629870.33786606
     motorway                                         | 403622.478126363
     tertiary                                         | 360394.879051303
     motorway_link                                    | 294261.419479668
     secondary                                        | 276264.303897926
     unclassified                                     | 166936.371604458
     primary                                          | 135034.233017947
     footway                                          | 71798.4878378096
     service                                          |  28337.635038596
     trunk                                            | 20353.5819826076
     cycleway                                         | 8863.75144825929
     pedestrian                                       | 4867.05032825026
     construction                                     | 4803.08162103562
     residential; motorway_link                       | 3661.57506293745
     trunk_link                                       | 3202.18981240201
     primary_link                                     | 2492.57457083536
     living_street                                    | 1894.63905457332
     primary; residential; motorway_link; residential | 1367.76576941335
     undefined                                        |  380.53861910346
     steps                                            | 282.745221342127
     motorway_link; residential                       |  215.07778911517
    

    注解

    ORDER BY length DESC 子句按照长度降序排列结果。结果是最常见的类型首先出现在列表中。