Bu bölüm MongoDB'nin coğrafi verileri nasıl depoladığını tanıtıyor. MongoDB'nin coğrafi sorgulama işlevselliğinden yararlanmak için öncelikle coğrafi verileri nasıl depolayacağımızı anlamamız gerekiyor.

Coğrafi veriler genellikle noktalar, çizgiler ve geometrik şekillerden oluşur.

Harita üzerinde bir nokta, boylam ve enlem koordinatları ile tanımlanır. Birden çok nokta bir çizgi oluştururken, birden çok çizgi çeşitli şekiller oluşturabilir.

Pratik uygulamalarda: Bir mağazanın konumu, "Neredeyim?", ve "Okul nerede?" tümü koordinatlar kullanılarak temsil edilebilir. Bir kampüsün veya alışveriş merkezinin genişliği tanımlamak için geometrik şekiller gereklidir.

GeoJSON Objesi

MongoDB coğrafi bilgileri temsil etmek için GeoJSON nesnelerini kullanır.

Yaygın GeoJSON tipleri şunları içerir:

  • Point - bir koordinat noktasını temsil eder
  • LineString - bir çizgiyi temsil eder
  • Polygon - bir poligonu temsil eder

MongoDB alanlarında GeoJSON nesnelerini depolamak için format şu şekildedir:

<alan>: { type: <geojson tipi>, coordinates: <koordinatlar> }

Açıklama:

  • - Alan adı
  • type - GeoJSON tipi
  • coordinates - Koordinat noktalarının bir dizisi. Farklı GeoJSON tipleri için format değişir.

Örnek:

konum: {
      type: "Point",  // coğrafi veri tipi, bu durumda bir koordinat noktası
      coordinates: [-73.856077, 40.848447] // boylam, enlem
}

Açıklama: Konum alanı koordinat noktası tipindeki coğrafi verileri depolar.

Koordinat Noktası (Point)

Format:

{ type: "Point", coordinates: [ boylam, enlem ] }

Örnek:

{ type: "Point", coordinates: [ 40, 5 ] }

Çizgi (LineString)

Format:

{ type: "LineString", coordinates: [ nokta1, nokta2, ...] }

Örnek:

{ type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }

Poligon

Bir veya daha fazla çizgiden oluşabilir. Format:

{
  type: "Polygon",
  coordinates: [ 
		çizgi1,
		çizgi2,
		....
	]
}

Not: Her çizgi segmentinin başlangıç ve bitiş koordinatlarının kapatılmış bir şekil oluşturmak için aynı olması gerekmektedir.

Tek Çizgi Segmentinden Oluşan Şekil

{
  type: "Polygon",
  coordinates: [
  		[ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0  ] ] // Çizgi segmentinin koordinat noktaları, ilk ve son koordinatların aynı olduğuna dikkat edin.
	]
}

Birden Fazla Çizgi Segmentinden Oluşan Şekil

{
  type : "Polygon",
  coordinates : [
     [ [ 0 , 0 ] , [ 3 , 6 ] , [ 6 , 1 ] , [ 0 , 0 ] ], // Çizgi segmenti 1
     [ [ 2 , 2 ] , [ 3 , 3 ] , [ 4 , 2 ] , [ 2 , 2 ] ]  // Çizgi segmenti 2
  ]
}

Coğrafi İndeks

MongoDB, GeoJSON verilerinin sorgulanmasını hızlandırmak için iki tür coğrafi indeksi destekler.

2dsphere

Bu bir küresel geometri indeks türüdür, yani iki nokta arasındaki mesafeyi hesaplarken, dünyayı bir küre olarak ele alır.

2dsphere indeksi oluşturmanın örneği:

db.koleksiyon.createIndex( { location : "2dsphere" } )

Konum alanı için bir indeks oluşturur.

2d

2D, iki nokta arasındaki mesafeyi düzlemdeymiş gibi hesaplamak için kullanılan bir planar geometri türüdür. 2D indeksi oluşturmanın örneği:

db.koleksiyon.createIndex( { location : "2d" } )

Bu, konum alanı için bir indeks oluşturur.

Coğrafi Sorgu Tipleri

Coğrafi sorgular, tamamen geometrik hesaplamalarla ilgilidir. MongoDB tarafından desteklenen sorgu tipleri aşağıdakilerdir:

  • $geoIntersects - Belirli bir geometrik şekil kesişimini eşleştirmek için kullanılır.
  • $geoWithin - Belirli bir geometrik alanın içinde bulunan belgeleri eşleştirir.
  • $near - Genellikle belirli bir koordinat noktasına en yakın belgeleri sorgulamak için kullanılır.

Not: Daha fazla coğrafi sorgu bilgisi için lütfen ilgili bölümlere başvurun.