17. Övningar för projicering¶
Här är en påminnelse om några av de funktioner vi har sett. Tips: de bör vara användbara för övningarna!
sum(uttryck) aggregat för att returnera en summa för en uppsättning poster
ST_Length(linestring) returnerar längden på linestring
ST_SRID(geometry) returnerar geometrins SRID
ST_Transform(geometry, srid) konverterar geometrier till olika spatiala referenssystem
ST_GeomFromText(text) returnerar
geometry
ST_AsText(geometry) returnerar WKT
text
ST_AsGML(geometry) returnerar GML
text
Kom ihåg de online-resurser som finns tillgängliga för dig:
Tänk också på de tabeller vi har tillgängliga:
nyc_census_blocks
name, popn_total, boroname, geom
nyc_streets
name, type, geom
nyc_subway_stations
name, geom
nyc_neighborhoods
name, boroname, geom
17.1. Övningar¶
Vad är längden på alla gator i New York, mätt i UTM 18?
SELECT Sum(ST_Length(geom)) FROM nyc_streets;
10418904.7172
Vad är WKT-definitionen av SRID 2831?
SELECT srtext FROM spatial_ref_sys WHERE SRID = 2831;
Eller, via https://epsg.io/2831
PROJCS["NAD83(HARN) / New York Long Island", GEOGCS["NAD83(HARN)", DATUM["NAD83 (High Accuracy Regional Network)", SPHEROID["GRS 1980", 6378137.0, 298.257222101, AUTHORITY["EPSG","7019"]], TOWGS84[-0.991, 1.9072, 0.5129, 0.0257899075194932, -0.009650098960270402, -0.011659943232342112, 0.0], AUTHORITY["EPSG","6152"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4152"]], PROJECTION["Lambert Conic Conformal (2SP)", AUTHORITY["EPSG","9802"]], PARAMETER["central_meridian", -74.0], PARAMETER["latitude_of_origin", 40.166666666666664], PARAMETER["standard_parallel_1", 41.03333333333333], PARAMETER["false_easting", 300000.0], PARAMETER["false_northing", 0.0], PARAMETER["scale_factor", 1.0], PARAMETER["standard_parallel_2", 40.666666666666664], UNIT["m", 1.0], AXIS["Easting", EAST], AXIS["Northing", NORTH], AUTHORITY["EPSG","2831"]]
Vad är längden på alla gator i New York, mätt i SRID 2831?
SELECT Sum(ST_Length(ST_Transform(geom,2831))) FROM nyc_streets;
10421993.706374
Observera
Skillnaden mellan UTM 18 och State Plane Long Island-måtten är (10421993 - 10418904)/10418904, eller 0,02%. Beräknat på sfäroiden med hjälp av Geografi är den totala gatulängden 10421999, vilket är närmare State Plane-värdet. Detta är inte förvånande, eftersom State Plane Long Island-projektionen är exakt kalibrerad för ett mycket litet område (New York City) medan UTM 18 måste ge rimliga resultat för ett stort regionalt område.
Hur många gator korsar 74:e meridianen?
SELECT Count(*) FROM nyc_streets WHERE ST_Intersects( ST_Transform(geom, 4326), 'SRID=4326;LINESTRING(-74 20, -74 60)' );
223
”74:e meridianen” är ett fint sätt att säga ”en vertikal linje i geografin där X-värdet är -74”. Vi kan konstruera en sådan linje och sedan jämföra den med gatorna, som också projiceras i geografin. Om man projicerar linjen i UTM och jämför den där får man ett något annorlunda svar. För att få samma svar måste du ”segmentisera” den, så att den har fler punkter, innan du transformerar.
SELECT Count(*) FROM nyc_streets WHERE ST_Intersects( geom, ST_Transform(ST_Segmentize('SRID=4326;LINESTRING(-74 20, -74 60)'::geometry,0.001), 26918) );