Tüm Ürünler
Search
Belge Merkezi

Tair (Redis® OSS-Compatible):GIS

Son Güncelleme:Oct 03, 2026

TairGIS, R-tree dizinleri üzerine kurulmuş bir GIS veri yapısıdır. İyi bilinen metin (WKT) formatını kullanarak noktaları, çizgi dizilerini ve çokgenleri depolamanıza ve sorgulamanıza olanak tanır. Yalnızca nokta sorgularını işlemek için GeoHash ve Sıralı Küme kullanan yerel Redis GEO komutlarının aksine TairGIS; tüm üç geometri türü için uzamsal ilişki sorgularını (içerir, içinde, kesişir) ve yarıçap tabanlı yakınlık aramasını destekler.

Modül açık kaynaklıdır. Daha fazla bilgi için bkz. TairGIS.

Temel kavramlar

Uzamsal ilişki sorguları: içerir, içinde ve kesişir

Bu üç komut, sağladığınız bir geometri ile bir alanda saklanan şekiller arasındaki farklı yönsel ilişkileri sorgular. Ayrım önemlidir çünkü GIS.CONTAINS ve GIS.WITHIN benzer görünür ancak zıt yönlerde çalışır:

  • GIS.CONTAINS — girdinizi içeren saklanan şekilleri bulur. Bir noktanız (örneğin kullanıcının GPS konumu) olduğunda ve bunun hangi saklanan bölgeleri kapsadığını bilmek istediğinizde bu komutu kullanın. Örneğin: "Bu adres hangi teslimat bölgelerinin içinde kalıyor?"

  • GIS.WITHIN — girdinizin içinde kalan saklanan şekilleri bulur. Büyük bir sınırlayıcı şekliniz olduğunda ve hangi saklanan şekillerin tamamen bunun içinde kaldığını bilmek istediğinizde bu komutu kullanın. Örneğin: "Bu ilçe sınırları içinde tamamen kalan otoparklar hangileridir?"

  • GIS.INTERSECTS — girdinizle herhangi bir koordinatı paylaşan saklanan şekilleri bulur. Kısmi örtüşmenin yeterli olduğu durumlarda bu komutu kullanın. Örneğin: "Bu inşaat alanından geçen yollar hangileridir?"

WKT geometri türleri

TairGIS geometrileri tanımlamak için iyi bilinen metni (WKT) kullanır. Üç türün tümü TYPE (coordinates) formatını izler:

Type WKT example Constraint
POINT 'POINT (120.086631 30.138141)' Önce boylam sonra enlem
LINESTRING 'LINESTRING (30 10, 40 40)' En az iki koordinat çifti
POLYGON 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' Üç veya daha fazla koordinat çifti; ilk ve son eşleşmelidir

Geçerli boylam aralığı: -180 ile 180. Geçerli enlem aralığı: -90 ile 90.

MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRY ve COLLECTION türleri desteklenmez.

area parametresi

Her TairGIS komutu ilk parametre olarak bir area bağımsız değişkenini alır. Alan, ilgili geometrileri gruplayan mantıksal bir kapsayıcıdır (bir Redis anahtarı). Aynı alana eklediğiniz tüm şekiller birlikte sorgulanabilir.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

Daha fazla özellik ve daha yüksek kararlılık için örneğinizi en son küçük sürüme güncelleyin. Daha fazla bilgi için bkz. Örneğin küçük sürümünü güncelleme . Küme veya okuma/yazma ayrıştırma örnekleri için tüm komutların beklendiği gibi çalışmasını sağlamak üzere proxy düğümlerini de en son küçük sürüme güncelleyin.

Kullanım notları

TairGIS verileri Tair örneğinde depolanır.

Desteklenen komutlar

KomutSözdizimiAçıklama
GIS.ADDGIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]Bir alana bir veya daha fazla WKT ile tanımlanmış geometri ekler
GIS.GETGIS.GET area polygonNameAdlandırılmış bir geometrinin WKT'sini alır
GIS.GETALLGIS.GETALL area [WITHOUTWKT]Bir alandaki tüm geometri adlarını ve isteğe bağlı olarak WKT'lerini alır
GIS.CONTAINSGIS.CONTAINS area polygonWkt [WITHOUTWKT]Girdi geometrisini içeren saklanan geometrileri döndürür
GIS.WITHINGIS.WITHIN area polygonWkt [WITHOUTWKT]Girdi geometrisinin içinde kalan saklanan geometrileri döndürür
GIS.INTERSECTSGIS.INTERSECTS area polygonWktGirdi geometrisiyle kesişen saklanan geometrileri döndürür
GIS.SEARCHGIS.SEARCH area [RADIUS lon lat dist M|KM|FT|MI] [MEMBER field dist M|KM|FT|MI] [GEOM geom] [COUNT count] [ASC|DESC] [WITHDIST] [WITHOUTWKT]Bir yarıçap veya çokgen sınırı içindeki noktaları sorgular
GIS.DELGIS.DEL area polygonNameBir alandan adlandırılmış bir geometriyi siler
DELDEL key [key ...]Bir veya daha fazla TairGIS anahtarını siler (yerel Redis komutu)

Komut sözdizimi kuralları:

  • UPPERCASE: komut anahtar sözcüğü

  • *Italics*: değişken

  • [options]: isteğe bağlı parametre; köşeli parantez içermeyen parametreler gereklidir

  • A|B: birbirini dışlayan — yalnızca birini belirtin

  • ...: önceki parametre tekrarlanabilir

GIS.ADD

Bir alana bir veya daha fazla WKT ile tanımlanmış geometri ekler.

Time complexity
Item Details
Syntax GIS.ADD area polygonName polygonWkt [polygonName polygonWkt ...]
O(log n)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
polygonName Geometrinin adı
polygonWkt WKT formatındaki geometri. Desteklenen türler: POINT, LINESTRING, POLYGON
WKT (well-known text), vektör geometri nesnelerini, uzamsal referans sistemlerini ve uzamsal referans sistemleri arasındaki dönüşümleri temsil etmek için kullanılan standart bir metin işaretleme dilidir.

Dönüş değeri

  • Başarılı: eklenen veya güncellenen geometri sayısı

  • Başarısız: bir hata mesajı

Örnek

GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'

Çıktı:

(integer) 1

GIS.GET

Bir alandaki adlandırılmış bir geometrinin WKT'sini alır.

Item Details
Syntax GIS.GET area polygonName
Time complexity O(1)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
polygonName Alınacak geometrinin adı

Dönüş değeri

  • Başarılı: geometrinin WKT temsili

  • Bulunamadı (alan veya geometri mevcut değil): nil

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' komutunu çalıştırın.

GIS.GET hangzhou campus

Çıktı:

'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))'

GIS.GETALL

Bir alandaki tüm geometri adlarını varsayılan olarak WKT'leriyle birlikte alır.

Item Details
Syntax GIS.GETALL area [WITHOUTWKT]
Time complexity O(n)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
WITHOUTWKT (İsteğe bağlı) Belirtildiğinde yalnızca geometri adlarını döndürür, WKT'lerini değil

Dönüş değeri

  • Başarılı: geometri adları ve WKT (veya WITHOUTWKT belirtilirse yalnızca adlar)

  • Bulunamadı (alan mevcut değil): nil

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' komutunu çalıştırın.

GIS.GETALL hangzhou

Çıktı:

1) "campus"
2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.CONTAINS

Bir alanda saklanan ve girdi geometrisini içeren geometrileri döndürür.

Bir geometriniz (örneğin bir koordinat noktası) olduğunda ve bunun hangi saklanan bölgeleri kapsadığını bilmek istediğinizde GIS.CONTAINS komutunu kullanın.

Item Details
Syntax GIS.CONTAINS area polygonWkt [WITHOUTWKT]
Time complexity Optimal: O(log² n); worst case: O(log n)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
polygonWkt WKT formatındaki girdi geometrisi. Desteklenen türler: POINT, LINESTRING, POLYGON
WITHOUTWKT (İsteğe bağlı) Belirtildiğinde yalnızca geometri adlarını döndürür, WKT'lerini değil

Dönüş değeri

  • Başarılı: girdiyi içeren geometrilerin sayısı ve WKT'si

  • Bulunamadı (alan mevcut değil): empty list or set

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' komutunu çalıştırın.

Aşağıdaki örnek (30, 11) noktasını içeren saklanan çokgenleri kontrol eder:

GIS.CONTAINS hangzhou 'POINT (30 11)'

Çıktı:

1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.WITHIN

Bir alanda saklanan ve girdi geometrisinin tamamen içinde kalan geometrileri döndürür.

Bir sınırınız (örneğin bir ilçe çokgeni) olduğunda ve hangi saklanan şekillerin bunun tamamen içinde kaldığını bilmek istediğinizde GIS.WITHIN komutunu kullanın.

Item Details
Syntax GIS.WITHIN area polygonWkt [WITHOUTWKT]
Time complexity Optimal: O(log² n); worst case: O(log n)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
polygonWkt WKT formatındaki girdi geometrisi. Desteklenen türler: POINT, LINESTRING, POLYGON
WITHOUTWKT (İsteğe bağlı) Belirtildiğinde yalnızca geometri adlarını döndürür, WKT'lerini değil
MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRY ve COLLECTION türleri desteklenmez.

Dönüş değeri

  • Başarılı: girdinin içinde kalan geometrilerin sayısı ve WKT'si

  • Bulunamadı (alan mevcut değil): empty list or set

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' komutunu çalıştırın.

Aşağıdaki örnek daha büyük sınırlayıcı çokgenin içinde kalan saklanan çokgenleri kontrol eder:

GIS.WITHIN hangzhou 'POLYGON ((30 5, 50 50, 20 50, 5 20, 30 5))'

Çıktı:

1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.INTERSECTS

Bir alanda saklanan ve girdi geometrisiyle herhangi bir koordinatı paylaşan geometrileri döndürür.

Kısmi örtüşmenin yeterli olduğu durumlarda (örneğin bir inşaat alanından geçen tüm yolları bulmak için) GIS.INTERSECTS komutunu kullanın.

Item Details
Syntax GIS.INTERSECTS area polygonWkt
Time complexity Optimal: O(log² n); worst case: O(log n)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
polygonWkt WKT formatındaki girdi geometrisi. Desteklenen türler: POINT, LINESTRING, POLYGON
WITHOUTWKT (İsteğe bağlı) Belirtildiğinde yalnızca geometri adlarını döndürür, WKT'lerini değil

Dönüş değeri

  • Başarılı: girdiyle kesişen geometrilerin sayısı ve WKT'si

  • Bulunamadı (alan mevcut değil): empty list or set

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' komutunu çalıştırın.

Aşağıdaki örnek (30, 10) ile (40, 40) arasındaki çizgi dizisiyle kesişen saklanan çokgenleri kontrol eder:

GIS.INTERSECTS hangzhou 'LINESTRING (30 10, 40 40)'

Çıktı:

1) "1"
2) 1) "campus"
   2) "POLYGON((30 10,40 40,20 40,10 20,30 10))"

GIS.SEARCH

Belirtilen bir yarıçap veya çokgen sınırı içinde kalan bir alandaki nokta geometrilerini sorgular. Bu komut, yerel Redis GEORADIUS komutunun TairGIS eşdeğeridir.

Arama sınırını tanımlamak için RADIUS, MEMBER veya GEOM seçeneklerinden tam olarak birini belirtin.

ÖğeAyrıntılar
SyntaxGIS.SEARCH area [RADIUS lon lat dist M|KM|FT|MI] [MEMBER field dist M|KM|FT|MI] [GEOM geom] [COUNT count] [ASC|DESC] [WITHDIST] [WITHOUTWKT]
Time complexityOptimal: O(log² n); worst case: O(log n)

Arama sınırı seçenekleri (tam olarak birini belirtin)

Option Description Example
RADIUS lon lat dist unit Verilen boylam ve enlemin dist mesafesi içinde arama yapar. Birimler: M (metre), KM (kilometre), FT (fit), MI (mil) RADIUS 15 37 200 KM
MEMBER field dist unit Saklanan bir noktayı merkez olarak kullanır ve onun dist mesafesi içinde arama yapar MEMBER Agrigento 100 KM
GEOM geom Bir WKT dizesiyle tanımlanan çokgen içinde arama yapar GEOM 'POLYGON((10 30,20 30,20 40,10 40))'

Ek seçenekler

Option Description
COUNT count Döndürülen sonuç sayısını sınırlar. Örnek: COUNT 3
ASC Sonuçları mesafeye göre sıralar, en yakından başlar
DESC Sonuçları mesafeye göre sıralar, en uzakтан başlar
WITHDIST Her sonuç noktası ile belirtilen merkez noktası arasındaki mesafeyi döndürür
WITHOUTWKT Yalnızca geometri adlarını döndürür, WKT'lerini değil

Dönüş değeri

  • Başarılı: eşleşen noktaların sayısı ve WKT'si

  • Bulunamadı (alan mevcut değil): empty list or set

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD Sicily "Palermo" "POINT (13.361389 38.115556)" "Catania" "POINT(15.087269 37.502669)" komutunu çalıştırın.

Aşağıdaki örnek Sicily alanında (15, 37) noktasının 200 km yarıçapı içinde kalan ve mesafeye göre sıralanan tüm noktaları bulur:

GIS.SEARCH Sicily RADIUS 15 37 200 km WITHDIST ASC

Çıktı:

1) (integer) 2
2) 1) "Catania"
   2) "POINT(15.087269 37.502669)"
   3) "56.4413"
   4) "Palermo"
   5) "POINT(13.361389 38.115556)"
   6) "190.4424"

GIS.DEL

Bir alandan adlandırılmış bir geometriyi siler.

Item Details
Syntax GIS.DEL area polygonName
Time complexity O(log n)

Parametreler

Parameter Description
area İlgili geometrileri gruplayan alan (anahtar)
polygonName Silinecek geometrinin adı

Dönüş değeri

  • Başarılı: OK

  • Bulunamadı (alan veya geometri mevcut değil): nil

  • Başarısız: bir hata mesajı

Örnek

Ön koşullar: GIS.ADD hangzhou campus 'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))' komutunu çalıştırın.

GIS.DEL hangzhou campus

Çıktı:

OK

Sonraki adımlar