19. Övningar i geografi

Här är en påminnelse om alla de funktioner vi har sett hittills. De bör vara användbara för övningarna!

  • Sum(number) adderar alla siffror i resultatuppsättningen

  • ST_GeogFromText(text) returnerar en geografisk

  • ST_Distance(geography, geography) returnerar avståndet mellan olika geografiska områden

  • ST_Transform(geometry, srid) returnerar geometrin i den nya projektionen

  • ST_Length(geography) returnerar längden på raden

  • ST_Intersects(geometry, geometry) returnerar true om objekten inte är åtskilda i planar space

  • ST_Intersects(geography, geography) returnerar true om objekten inte är åtskilda i sfäroidal rymd

Tänk också på de tabeller vi har tillgängliga:

  • nyc_streets

    • name, type, geom

  • nyc_neighborhoods

    • name, boroname, geom

19.1. Övningar

  • Hur långt är det mellan New York och Seattle? Vilka är enheterna i svaret?

    Observera

    New York = POINT(-74.0064 40.7142) och Seattle = POINT(-122.3331 47.6097)

    SELECT ST_Distance(
      'POINT(-74.0064 40.7142)'::geography,
      'POINT(-122.3331 47.6097)'::geography
      );
    
    3875538.57141352
    
  • Vad är den totala längden på alla gator i New York, beräknat på sfäroiden?

    SELECT Sum(
      ST_Length(Geography(
        ST_Transform(geom,4326)
      )))
    FROM nyc_streets;
    
    10421999.666
    

    Observera

    Den längd som beräknas i den plana projektionen ”UTM Zone 18” är 10418904.717, 0.02% different. UTM är bra på att bevara yta och avstånd inom zongränserna.

  • Korsar ”POINT(1 2.0001)” ”POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))” i geografi? I geometri? Varför är det skillnad?

    SELECT ST_Intersects(
      'POINT(1 2.0001)'::geography,
      'POLYGON((0 0,0 2,2 2,2 0,0 0))'::geography
    );
    
    SELECT ST_Intersects(
      'POINT(1 2.0001)'::geometry,
      'POLYGON((0 0,0 2,2 2,2 0,0 0))'::geometry
    );
    
    true and false
    

    Observera

    Kvadratens övre kant är en rät linje i geometri och passerar under punkten, så kvadraten innehåller inte punkten. Kvadratens övre kant är en storcirkel i geografi, och passerar över punkten, så kvadraten innehåller punkten.