10. تمارين الأشكال الهندسية¶
إليك تذكيرًا بجميع الدوال التي رأيناها حتى الآن. ستكون مفيدة في التمارين!
sum(expression) دالة تجميعية تُعيد مجموع مجموعة من السجلات
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) تُعيد عدد الإحداثيات في الخط
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) تُعيد
geometryST_AsText(geometry) تُعيد WKT
textST_AsEWKT(geometry) تُعيد EWKT
textST_GeomFromWKB(bytea) تُعيد
geometryST_AsBinary(geometry) تُعيد WKB
byteaST_AsEWKB(geometry) تُعيد EWKB
byteaST_GeomFromGML(text) تُعيد
geometryST_AsGML(geometry) تُعيد GML
textST_GeomFromKML(text) تُعيد
geometryST_AsKML(geometry) تُعيد KML
textST_AsGeoJSON(geometry) تُعيد JSON
textST_AsSVG(geometry) تُعيد SVG
text
وتذكّر أيضًا الجداول المتاحة لدينا:
nyc_census_blocksblkid (معرّف الكتلة)، popn_total (إجمالي السكان)، boroname (اسم الحي الإداري)، geom (الشكل الهندسي)
nyc_streetsname (الاسم)، type (النوع)، geom (الشكل الهندسي)
nyc_subway_stationsname (الاسم)، geom (الشكل الهندسي)
nyc_neighborhoodsname (الاسم)، boroname (اسم الحي الإداري)، geom (الشكل الهندسي)
10.1. التمارين¶
ما مساحة حي 'West Village'؟
SELECT ST_Area(geom) FROM nyc_neighborhoods WHERE name = 'West Village';
1044614.5296486ملاحظة
تُعطى المساحة بالمتر المربع. للحصول على المساحة بالهكتار، اقسم على 10000. وللحصول عليها بالإيكر (acre)، اقسم على 4047.
ما نوع الشكل الهندسي لشارع ‘Pelham St’؟ وما طوله؟
SELECT ST_GeometryType(geom), ST_Length(geom) FROM nyc_streets WHERE name = 'Pelham St';
ST_MultiLineString 50.323
ما تمثيل GeoJSON لمحطة المترو 'Broad St'؟
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ما مساحة مانهاتن بالإيكر (acre)؟ (تلميح: يحتوي كل من
nyc_census_blocksوnyc_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ما طول 'Columbus Cir' (أي Columbus Circle)؟
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النتيجة حسب الطول تنازليًا، فتظهر الأنواع الأكثر انتشارًا في أول القائمة.