0Pricing
SQL Academy · Ders

Mekânsal Veri Türleri

SQL'de noktalar, çizgiler ve çokgenler.

Mekânsal Veri Türleri, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Mekânsal Veri Nedir?

Mekânsal veriler gerçek dünyadaki konumları, şekilleri ve alanları tanımlar. Sıradan bir sayı veya dizeden farklı olarak, mekânsal bir değer geometrik anlam taşır — haritadaki bir nokta, yol kesimi veya ülke sınırı.

PostGIS, güçlü mekânsal veri türleri ve işlevleri ekleyen bir PostgreSQL eklentisidir; veritabanınızı tam teşekküllü bir coğrafi bilgi sistemine (GIS) dönüştürür.

-- Enable the PostGIS extension
CREATE EXTENSION IF NOT EXISTS postgis;

GEOMETRY Türü

PostGIS'teki temel mekânsal tür geometridir. Şekilleri düz (Öklidyen) bir koordinat uzayında depolar. Sütun oluştururken POINT, LINESTRING veya POLYGON gibi bir alt türü kısıt olarak belirtebilirsiniz.

Alt türle birlikte SRID (Mekânsal Referans ID) belirtmek, PostGIS'e verilerinizin hangi koordinat sistemini kullandığını bildirir.

CREATE TABLE locations (
  id      SERIAL PRIMARY KEY,
  name    TEXT,
  geom    geometry(POINT, 4326)
);

POINT Ekleme

Bir POINT, X (boylam) ve Y (enlem) koordinatlarına sahip tek bir konumu temsil eder. ST_GeomFromText işlevi, Bilinen Metin (WKT) dizesini bir geometri değerine dönüştürür.

SRID 4326, dünya genelindeki GPS cihazlarının kullandığı WGS 84 koordinat sistemidir.

INSERT INTO locations (name, geom)
VALUES
  ('Eiffel Tower',  ST_GeomFromText('POINT(2.2945 48.8584)', 4326)),
  ('Big Ben',       ST_GeomFromText('POINT(-0.1246 51.5007)', 4326)),
  ('Colosseum',     ST_GeomFromText('POINT(12.4922 41.8902)', 4326));

SELECT name, ST_AsText(geom) AS wkt FROM locations;

LINESTRING Türü

Bir LINESTRING, doğru parçalarıyla birbirine bağlanan iki veya daha fazla noktanın sıralı dizisidir. Yolları, nehirleri veya herhangi bir doğrusal özelliği temsil etmek için idealdir.

WKT'deki her sayı çifti bir köşedir (boylam enlem). PostGIS, yolun tamamını tek bir geometri değeri olarak depolar.

CREATE TABLE roads (
  id    SERIAL PRIMARY KEY,
  name  TEXT,
  path  geometry(LINESTRING, 4326)
);

INSERT INTO roads (name, path)
VALUES (
  'High Street',
  ST_GeomFromText(
    'LINESTRING(-0.125 51.500, -0.120 51.502, -0.115 51.505)',
    4326
  )
);

SELECT name, ST_Length(path) AS length_degrees FROM roads;

POLYGON Türü

Bir POLYGON, çevrelenmiş bir alanı tanımlar. Dış sınırı bir halkadır — ilk ve son noktaları aynı olan kapalı bir LINESTRING. Bir poligon, parkın içindeki göl gibi alanları temsil etmek için iç halkalara (boşluklara) da sahip olabilir.

Tüm halkalar kapalı olmalıdır: başlangıç koordinatını sonda tekrarlayın.

CREATE TABLE zones (
  id    SERIAL PRIMARY KEY,
  name  TEXT,
  area  geometry(POLYGON, 4326)
);

INSERT INTO zones (name, area)
VALUES (
  'Central Park Approx',
  ST_GeomFromText(
    'POLYGON((-73.9817 40.7681, -73.9580 40.7681,
              -73.9580 40.7964, -73.9817 40.7964,
              -73.9817 40.7681))',
    4326
  )
);

SELECT name, ST_Area(area) AS area_sq_deg FROM zones;

GEOGRAPHY ve GEOMETRY

PostGIS iki mekânsal tür ailesi sunar: geometri düz bir Kartezyen düzlem kullanırken coğrafya Dünya'yı eğri bir elipsoid olarak modeller.

Geniş alanlar arasındaki gerçek dünya mesafelerini metre cinsinden doğru şekilde hesaplamanız gerektiğinde coğrafya kullanın. Yerel bir projeksiyonlu koordinat sistemiyle çalışırken veya en yüksek performansa ihtiyaç duyduğunuzda geometri kullanın.

CREATE TABLE cities (
  id      SERIAL PRIMARY KEY,
  name    TEXT,
  geog    geography(POINT, 4326)
);

INSERT INTO cities (name, geog) VALUES
  ('New York',  ST_GeogFromText('POINT(-74.0060 40.7128)')),
  ('London',    ST_GeogFromText('POINT(-0.1278 51.5074)'));

-- Distance in metres using geography
SELECT
  a.name AS from_city,
  b.name AS to_city,
  ROUND(ST_Distance(a.geog, b.geog)::NUMERIC) AS distance_m
FROM cities a, cities b
WHERE a.name = 'New York' AND b.name = 'London';

Bilinen Metin (WKT) ve WKB

Mekânsal veriler iki standart biçimde serileştirilebilir. Bilinen Metin (WKT) insan tarafından okunabilir: POINT(2.29 48.86). Bilinen İkili (WKB), dahili olarak ve veri aktarımı için kullanılan kompakt bir ikili gösterimdir.

PostGIS, dahili depolama ile bu biçimler arasında dönüştürme yapmak için ST_AsText ve ST_AsBinary işlevlerini sağlar.

SELECT
  name,
  ST_AsText(geom)          AS wkt,
  ST_AsEWKT(geom)          AS ewkt,
  encode(ST_AsBinary(geom), 'hex') AS wkb_hex
FROM locations
LIMIT 2;

MULTIPOINT, MULTILINESTRING, MULTIPOLYGON

PostGIS, aynı türden birkaç şekli tek bir değerde gruplandıran çoklu geometri türlerini de destekler. Bu özellik, tek bir gerçek dünya varlığı birbirinden kopuk parçalardan oluştuğunda kullanışlıdır — örneğin MULTIPOLYGON olarak modellenen bir takımada.

Tüm standart mekânsal işlevler çoklu geometriler üzerinde aynı şekilde çalışır.

SELECT ST_AsText(
  ST_GeomFromText(
    'MULTIPOLYGON(
       ((0 0, 4 0, 4 4, 0 4, 0 0)),
       ((10 10, 14 10, 14 14, 10 14, 10 10))
     )'
  )
) AS multi_poly;

SELECT ST_NumGeometries(
  ST_GeomFromText(
    'MULTIPOLYGON(
       ((0 0, 4 0, 4 4, 0 4, 0 0)),
       ((10 10, 14 10, 14 14, 10 14, 10 10))
     )'
  )
) AS part_count;

GEOMETRYCOLLECTION

Bir GEOMETRYCOLLECTION, en genel mekânsal türdür — tek bir değerde nokta, çizgi ve çokgenlerin bir karışımını barındırabilir. Bu esneklik, bir veri kümesinde farklı geometri türlerinin aynı sütunda depolanabileceği durumlarda kullanışlıdır.

Bireysel üyeleri ST_GeometryN ile çıkarabilirsiniz.

SELECT ST_AsText(
  ST_GeomFromText(
    'GEOMETRYCOLLECTION(
       POINT(1 1),
       LINESTRING(0 0, 1 1, 2 2),
       POLYGON((0 0, 3 0, 3 3, 0 3, 0 0))
     )'
  )
) AS collection;

SELECT ST_AsText(
  ST_GeometryN(
    ST_GeomFromText(
      'GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(0 0, 1 1))'
    ),
    1
  )
) AS first_member;

GIST ile Mekânsal İndeksler

İçerme veya yakınlığı denetleyen mekânsal sorgular, her satırın geometrisini karşılaştırmalıdır — bu da potansiyel olarak milyonlarca şeklin taranması anlamına gelir. Bir GIST indeksi, geometrilerin sınırlayıcı kutularını indeksleyerek bu işlemi büyük ölçüde hızlandırır ve PostgreSQL'in eşleşmesi mümkün olmayan satırları atlamasını sağlar.

Sık sorguladığınız geometri veya coğrafya sütunları üzerinde her zaman bir GIST indeksi oluşturun.

-- Create a GIST index on a geometry column
CREATE INDEX idx_locations_geom
  ON locations
  USING GIST (geom);

-- PostgreSQL will now use the index for spatial operators
EXPLAIN ANALYZE
SELECT name
FROM locations
WHERE ST_DWithin(
  geom,
  ST_GeomFromText('POINT(2.3 48.9)', 4326),
  1.0
);

Geometri Özelliklerini Okuma

PostGIS, herhangi bir geometriden özellikleri çıkarmak için erişim işlevleri sağlar. ST_X ve ST_Y bir noktanın koordinatlarını, ST_SRID mekânsal referans kimliğini ve ST_GeometryType alt türün adını döndürür.

Bunlar mekânsal verileri incelemek ve doğrulamak için gereklidir.

SELECT
  name,
  ST_X(geom)            AS longitude,
  ST_Y(geom)            AS latitude,
  ST_SRID(geom)         AS srid,
  ST_GeometryType(geom) AS geom_type,
  ST_IsValid(geom)      AS is_valid
FROM locations;

Hızlı Kontrol

PostGIS mekânsal veri türleri hakkındaki anlayışınızı sınayın.

Ders Özeti

Bu derste PostGIS tarafından sağlanan temel mekânsal veri türlerini incelediniz. POINT, LINESTRING ve POLYGON türlerinin üç temel geometri alt türü olduğunu; çoklu geometri varyantlarının (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON) ve genel amaçlı GEOMETRYCOLLECTION türünün daha karmaşık şekilleri kapsadığını öğrendiniz.

Düz geometri türü ile elipsoidal coğrafya türü arasındaki farkı ve bunlar arasında nasıl seçim yapılacağını gördünüz. Bilinen Metin (WKT), mekânsal değerleri insan tarafından okunabilir dizeler olarak okumanızı ve yazmanızı sağlarken GIST indeksleri, büyük ölçeklerde mekânsal sorguları hızlı tutar. ST_X, ST_SRID ve ST_GeometryType gibi erişim işlevleri, herhangi bir geometri değerini doğrudan SQL içinde incelemenizi sağlar.

Sıkça Sorulan Sorular

“Mekânsal Veri Türleri” dersi ücretsiz mi?

Evet — “Mekânsal Veri Türleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Mekânsal Veri Türleri” dersinde ne öğreneceğim?

SQL'de noktalar, çizgiler ve çokgenler. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Mekânsal Veri Türleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Mekânsal Veri Türleri
  2. Mesafe ve En Yakın Komşular
  3. Mekânsal Birleştirmeler ve İçerme
  4. Mekânsal İndeksler (GiST)
← SQL Academy Sayfasına Dön