PostGIS GeoJSON Query

29 May

PostGIS ile SQL sorguları kullanarak GeoJSON sonuçları üretmek mümkündür. Bu işlem için gerekli olan PostgreSQL fonksiyonları:

  • jsonb_build_object()
  • jsonb_agg()
  • jsonb_build_object()
  • ST_AsGeoJSON()
  • to_jsonb

SQL sorgusu:

SELECT jsonb_build_object(
    'type',     'FeatureCollection',
    'features', jsonb_agg(features.feature)
)
FROM (
    SELECT jsonb_build_object(
      'type',       'Feature',
      'id',         gis_id,
      'geometry',   ST_AsGeoJSON(shape)::jsonb,
      'properties', to_jsonb(inputs) - 'shape' - 'gdb_geomattr_data'
      ) AS feature
    FROM (
          SELECT 
               * 
          FROM 
              sde.icmesuyu_hatlari 
          WHERE 
              objectid=121710
    ) inputs
) features;

Sorgu sonucu:

{
  "type": "FeatureCollection",
  "features": [
    {
      "id": "a71bca31-22d1-11e8-8590-0050568bf4f1",
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [
          458791.489,
          4520951.706,
          0
        ]
      },
      "properties": {
        "layer": "N_VANA_SİSTEM",
        "cbs_id": "811bca31-22d1-11e8-8590-0050568bf4f1",
        "aciklama": "AKTİF",
        "objectid": 121710,
        "zemin_kot": 43.57
      }
    }
  ]
}

PostGIS Kurulumu

26 May

PostGIS bir PostgreSQL uzantısıdır. PostgreSQL üzerinde bir veritabanı üzerine eklenebilir. Burada dikkat edilmesi gereken, PostgreSQL kurulu sırasında oluşturulan postgis veritabanı üzerine kurulmamasıdır.

Ancak postgis uzantısının işletim sistemi üzerinde bulunması gerekmektedir. Bu yazıda Ubuntu üzerinde PostgreSQL 12 veritabanına PostGIS 3 sürümü kurulmaktadır. Bunun için öncelikle repository version kontrolü yapmak gerekmektedir.

apt-cache policy postgis

Bu komut ile yülenecek sürümün Candidate: 3.0.1+dfsg-2.pgdg18.04+1 olduğunu öğreniyoruz.

PostGIS’i işletim sistemine yükleme komutu:

sudo apt-get install postgis

Artık PostGIS, Ubuntu üzerine indirildiğine göre, veritabanına eklenebilir durumdadır. Psql veya pgAdmin üzerinden veritabanına bağlanarak postgis uzantısını oluşturan SQL komutunu çalıştırdığınızda eklenti kurulacaktır.

CREATE EXTENSION postgis;

PostGIS raster desteği için gerekli SQL komutu:

CREATE EXTENSION postgis_raster;

PostGIS topoloji desteği için gerekli SQL komutu:

CREATE EXTENSION postgis_topology;

PostGIS ileri seviye 3D desteği ve sfcgal algoritması gibi diğer coğrafi veri işleme yetenekleri için gerekli SQL komutu:

CREATE EXTENSION postgis_sfcgal;

Tiger için bulanık eşleme gerekliyse:

CREATE EXTENSION fuzzystrmatch;

Kural tabanlı standartlaştırma için:

CREATE EXTENSION address_standardizer;

US Tiger Geocoder uzantısı için:

CREATE EXTENSION postgis_tiger_geocoder;

PostGIS Nedir?

25 May

PostGIS, GIS (Coğrafi Bilgi Sistemleri – CBS) nesnelerinin veritabanında depolanmasına izin veren bir PostgreSQL veritabanı uzantısıdır (extension). Tamamen ücretsizdir ve açık kaynak kodludur. PostGIS, GiST tabanlı R-Tree uzamsal dizinleri için destek ve GIS nesnelerinin analizi ve işlenmesi için işlevler içerir. GIS nesnelerinin analizi ve işlenmesi için fonksiyonlar içerir.

PostGIS, temel konumsal işlevlere ek olarak, Oracle Locator/Spatial ve SQL Server gibi diğer uzamsal veritabanlarında nadiren bulunan birçok özellik sunar. Bu özellikler listesine buradan ulaşabilirsiniz.

PostGIS Özellikleri

Tamamen SQL gücünü kullanarak vektör ve raster verileri üzerinde splicing (yapıştırma), dicing (kare/tile şeklinde bölme), morphing(dönüştürme), reclassifying(yeniden sınıflandırma), ve collecting(toplam)/unioning(birleştirme) gibi işlemler yapılabilir.

Raster üzerinde işlemler yapılabilmektedir.

Raster ve vektör verileri üzerinde SQL sorguları ile projeksiyon dönüşümleri yapılabilmektedir.

Hem komut satırı hem de GUI paketli araçlar yoluyla ESRI shape vektör verilerini içe ve dışa aktarma yanında diğer 3.parti açık kaynak araçlar aracılığıyla farklı formatları da desteklmektedir.

GeoTiff, NetCDF, PNG, JPG gibi birçok standart formattaki raster verilerini içe aktarmak için hazırlanmış komut satırı bulunmaktadır.

SQL kullanarak KML, GML, GeoJSON, GeoHash ve WKT gibi standart metin formatlı verileri içe aktarma fonksiyonları bulunmaktadır.

SQL kullanara raster verilerini GeoTIFF, PNG, JPG, NetCDF gibi çeşitli standart formatlarda oluşturma.

Ağ Topolojisi desteği bulunmaktadır.

3D nesne desteği, spatial index ve fonksiyonlar bulunmaktadır.

SQL fonksiyonları ile kusursuz bir şekilde rester/vektör piksel değerlerinin geometrik bölgeye göre çıkarılması, bölgelere göre istatistikler çalıştırılması, raster veriyi belli bir geometriyle kırpma gibi özellikleri bulunmaktadır.

Açık Kaynak Masaüstü Düzenleme/Görüntüleme Araçları

QGIS

PostGIS dahil olmak üzere birçok mekansal formatı destekler. Python uzantısı modeliyle PostGIS ile kullanılan masaüstü araçlarının en popüler olanıdır.

OpenJump

Java tabanlı bir yazılımdır. Bazı PostGIS de dahil olmak üzere birçok coğrafi mekansal formatı destekler.

uDig

Bazı PostGIS ve Oracle, SQL Server, ArcSDE gibi diğer uzamsal veritabanları dahil olmak üzere destek sunan Java tabanlı bir yazılımdır. Ana odak noktası OpenGIS standartlarına uymaktır.

gvSig

Java tabanlıdır ve işlevselliği QGIS’e benzer.

TileMill

Tile image görüntülerini işlemek için çok kullanışlıdır. Mapbox firmasına ait bir üründür. Ancak geliştirilmesi durdurulmuştur.

Açık Kaynak Haritalama Sunucuları

PostGIS ile en sık kullanılan sunucular aşağıda listelenmiştir. Bunların çoğu OpenGIS Konsorsiyumu (OGC) haritalama standartlarına uygundur. Harita sunucularının desteklediği formatlar şu şekildedir:

  • WMS – Web Map Service
  • WFS – Web Feature Service
  • WFS-T – Web Feature Service Transactional (ability to edit)
  • WCS – Web coverage service
  • WPS – Web Processing service
  • WMTS – Web Map Tile service

Mapserver

PostGIS’i destekleyen ve hala en popüler sunuculardan biri olan, C Tabanlı ilk harita sunucusu.

GeoServer

Mapserver ile benzer işlevlere sahiptir ve Web arayüzüne sahip bir harita sunucusudur. Yeni başlayanlara ve Enterprise GIS çalışanlarına ArcGIS Server gibi imkanlar sunar. OGC WMS, WFS, WFS-T’yi destekler.

Deegree

Java tabanlı coğrafi veri yönetimi, veri erişimi, görselleştirme, keşif ve güvenlik dahil olmak üzere bir çok yönetim imkanı sağlar.

QGIS Server

QGIS masaüstüne destek olarak, QGIS workspaces yayınlarını oluşturmak için kullaılır.

MapGuide 

Kullanıcıların web haritalama uygulamalarını ve geospatial web hizmetlerini hızlı bir şekilde geliştirmelerini ve dağıtmalarını sağlayan web tabanlı platformdur.

PostGIS ile ilgili PostgreSQL Uzantıları

pgRouting

PostGIS’e sürüş mesafesi, en kısa yol, gezgin satıcı gibi hız ve dönüş kısıtlamaları ile çeşitli maliyetleri göz önünde bulundurarak çözüm yapan ve coğrafi spatial rota yönlendirme yapan özellikler katar.

ogrfdw

Postgresql harici veri paketleyicisi.

GDAL/OGR

PostgreSQL’de diğer spatial ve spatial olmayan veri kaynaklarının tablo olarak okunmasına izin verir. Vektör verileri PostGIS geometri tipine çevrir.

pgpointcloud

Point Cloud verilerini PostgreSQL’de depolamak için bir PostgreSQL uzantısı ve yükleyicisi.