PostgreSQL zaten uzaysal veri türlerini, operatörleri ve indekslemeyi desteklemektedir.
PostGIS, PostgreSQL'in bir uzantısı olarak varolmayı zorunlu kılan şey nedir?
Neden hepimiz sadece PostgreSQL'in mekansal işlevselliğini kullanmıyoruz?
PostgreSQL zaten uzaysal veri türlerini, operatörleri ve indekslemeyi desteklemektedir.
PostGIS, PostgreSQL'in bir uzantısı olarak varolmayı zorunlu kılan şey nedir?
Neden hepimiz sadece PostgreSQL'in mekansal işlevselliğini kullanmıyoruz?
Yanıtlar:
Evreni 2001 yılının başlarına tekrar yaralarsanız ve sadece PostGIS'in mucitlerinin geleceği görmesine izin vermekle kalmaz, aynı zamanda PgSQL'in PSC'sinin geleceği görmesine izin vermezseniz, belki PostGIS PgSQL üzerinde bir dizi yama olur. Ancak, en azından, çekirdeğe yama olarak başlamış olsaydık, karşılaşacağımız ilk şey:
Ve çekirdek PgSQL şöyle derdi: "hayır, elbette değil, alanların iyi anlaşılmış bir semantiği var ve bunun gibi uyumsuz değişiklikler yapamayız" dedi.
Çekirdek olmayan geliştiriciler olarak, PostGIS birkaç yıl boyunca aylık ve 6 aylık sürümleri elemeyi başarırken, PgSQL çekirdeği yıllık ve daha uzun sürümlerle birlikte yanlara aktı. Ayrıca, projemizin haklarına sahip olduğumuzdan ne zaman istediğimiz özellikleri de ekleyebildik, ancak PgSQL'de çalışma haklarına sahip olmak çok uzun zaman alıyor.
PostGIS, PgSQL çekirdeğinin üzerine baktığı ve kendilerine "çekirdek, ek bir özellik olarak çekimi güzel olurdu" derken yeterince dışsal bir değer ortaya koyduğunda, şimdiden çok farklı bir standart ve tarzın kodu vardı. PgSQL (uyumsuz bir lisans altında söz konusu değil) birleşme fikrinin gerçekten mümkün olmadığını söyledi.
Bunun yerine PostGIS, PgSQL'in modüler ve genişletilebilir kalmasına yardımcı olan Really Large Complex Extension'ın kanonik bir örneği haline geldi. “PostGIS gibi bir şey nasıl etkilenir” sorusu sıkça sorulan bir sorudur, çünkü çekirdek PgSQL bazı değişiklikleri değerlendirir. Bu aynı zamanda PostGIS'in çekirdeğin bir parçası olması kadar iyi değil, yeterince iyi bir şey.
PgSQL çekirdeğinin uzun bağımlılık listesi gibi görmekten nefret edebileceği gibi, genellikle daha düşük kod tutarlılığı ve geliştirmek için umutsuzluk duyacakları API temizliği gibi nedenler de var. Konseptte bile, PostGIS, PgSQL'in bir ısırıkta yutması için çok büyük bir kuafördü.
Bu sadece doğru değil, PostgreSQL Spatial veri tiplerini desteklemiyor. Geometrik tipleri destekler . Bunlar bazı şeyler için mükemmel derecede iyi, fakat gerçek dünya koordinat sistemlerinden tamamen ayrı. Yerli türler
Endeks sorusuna gelince , SSS’de
PostgreSQL R-Tree endeksleri neden desteklenmiyor?
PostGIS'in ilk sürümleri PostgreSQL R-Tree dizinlerini kullandı. Ancak, PostgreSQL R-Trees, 0.6 sürümünden beri tamamen atıldı ve mekansal indeksleme, bir R-Tree-over-GiST şemasıyla sağlandı.
Testlerimiz doğal R-Tree ve GiST için karşılaştırılabilir bir arama hızı göstermiştir. Yerel PostgreSQL R-Trees, bunları GIS özellikleriyle kullanım için istenmeyen kılan iki sınırlamaya sahiptir (bu sınırlamaların genel olarak R-Tree konseptinden değil geçerli PostgreSQL yerel R-Tree uygulamasından kaynaklandığını unutmayın):
PostgreSQL'deki R-Tree indeksleri 8K boyutundan daha büyük olan özellikleri kullanamaz. GiST endeksleri, sınırlayıcı kutuyu özelliğin yerine koyma “kayıplı” numarasını kullanarak olabilir.
PostgreSQL'deki R-Tree indeksleri "null güvenli" değildir, bu nedenle null geometrileri içeren bir geometri sütunu üzerine bir indeks oluşturmak başarısız olur. [GiST endeksleri güvenli değil]
PostGIS , PostgreSQL nesne-ilişkisel veritabanı için konumsal bir veritabanı genişleticisidir . Konum sorgularının SQL'de çalıştırılmasını sağlayan coğrafi nesneler için destek ekler.
SELECT superhero.name FROM city, superhero WHERE ST_Contains(city.geom, superhero.geom) AND city.name = 'Gotham';
Temel konum farkındalığına ek olarak, PostGIS, Oracle Locator / Spatial ve SQL Server gibi rakip diğer mekansal veritabanlarında nadiren bulunan birçok özellik sunar. Daha fazla ayrıntı için PostGIS Özellik Listesi'ne bakın.
PostGIS Özellikleri listesi , bu yetenekleri de genişletir:
PostGIS, PostgreSQL veritabanına ilave tipler (geometri, coğrafya, raster ve diğerleri) ekler . Ayrıca, bu uzamsal türler için geçerli olan işlevler, operatörler ve dizin geliştirmeleri de ekler. Bu ilave fonksiyonlar, operatörler, indeks bağlamaları ve tipleri çekirdek PostgreSQL DBMS'nin gücünü artırır, hızlı, çok özellikli ve sağlam bir mekansal veritabanı yönetim sistemi yapar.
Özellik listesi
PostGIS 2+ serisi şunları sağlar:
- İnce taneli raster işleme için SQL raster harita cebirinin gücüyle ekleme, dicing, morphing, yeniden sınıflandırma ve toplama / birleştirme için hem vektör hem de raster veriler için işleme ve analitik işlevler
- Hem vektör hem de raster veri için mekansal yeniden sorgulama SQL çağrılabilir işlevleri ESRI şekil dosyası vektör verilerini hem komut satırı hem de GUI paketli araçlarla içe / dışa aktarma ve diğer 3. taraf Açık Kaynak araçlarıyla daha fazla format desteği
Raster verilerini birçok standart formattan içe aktarmak için paketlenmiş komut satırı: GeoTiff, NetCDF, PNG, JPG
Vektör verilerini oluşturma ve içe aktarma KML, GML, GeoJSON, GeoHash ve WKT gibi standart metin biçimleri için SQL kullanarak raster verilerini çeşitli standart biçimlerde GeoTIFF, PNG, JPG, NetCDF kullanarak birkaç tane kullanarak
Geometrik bölgelere göre piksel değerlerinin ekstrüzyonu, bölgelere göre koşu istatistikleri, rasterleri bir geometriyle kırpma ve rasterleri vektörleme için 3B nesne desteği, uzamsal indeks ve fonksiyonları Ağ Topolojisi desteği Paketlenmiş Kaplan Yükleyici / Geocoder / Ters Geocoder / US Census Tiger verilerinden yararlanarak
Ayrıca, bu yazıda daha önce belirtilen noktalara / bölümlere. PostGIS web sitesinde belirtildiği gibi ekleyeceğim Nasıl çalışır?
PostGIS C'de olduğu için, C ve C ++'daki diğer kütüphanelerden yararlanabilir ve bunu liberal bir şekilde yapar. PostGIS şunlara bağlıdır: