QGIS'de PostGIS ile Bire Çok İlişkiler


9

QGIS'de Bire Çok İlişkisi yapabilen herhangi bir araç bilen var mı?

Verilerimi PostGIS veritabanında aldım. Uzamsal veya uzamsal olmayan tablolarla ilişkili uzamsal katmanları sorgulayabilmek istiyorum. ArcGIS 9.x'te benzer bir şey yapmanıza izin veren bir yol olduğuna inanıyorum.

Yanıtlar:


12

Adlı bir uzamsal tablo locationve başka bir uzamsal olmayan tablo kullanın sample. Mekansal yapmak için çağrılan bir görünüm kullanılır location_sample. Aşağıdaki şema PostGIS 2.0 typmod sözdizimini kullanıyor:

CREATE TABLE location(
  gid serial NOT NULL,
  geom geometry(Point,4326),
  name character varying(50) NOT NULL,
  CONSTRAINT location_pkey PRIMARY KEY (gid),
  CONSTRAINT name_unique UNIQUE (name)
);
CREATE INDEX location_geom_idx ON location USING gist (geom);

CREATE TABLE sample(
  sid serial NOT NULL,
  name character varying(50) NOT NULL,
  location_name character varying(50),
  CONSTRAINT sample_pkey PRIMARY KEY (sid),
  CONSTRAINT location_name_fkey FOREIGN KEY (location_name)
      REFERENCES location (name) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE INDEX fki_location_name_fkey ON sample USING btree (location_name);

CREATE VIEW location_sample AS
  SELECT sample.sid, location.geom, sample.location_name, sample.name
  FROM location
  LEFT JOIN sample ON sample.location_name = location.name;

location_sampleQGIS'e veya kullandığınız CBS'ye yükleme yapabilmeniz gerekir . Her birini a sampleile atayın location_name, o konumda görünür. QGIS 1.8 kullanıyorsanız, göz önünde bulundurmanız gereken ekstra bir adım vardır . Bu görünüm için "birincil anahtar" dır sid("örnek kimliği" deyin).

Ben kurdum nasıl yabancı anahtarın arasında locationve samplegeçerli:

  • location_nameVar olmayan veya yanlış yazılan bir örneğe (boşluklar, tire işaretleri, büyük / küçük harf vb.) yazarsanız, kullanmanıza izin vermez (ör. MATCH SIMPLE)
  • location( namealanda) adını değiştirirseniz , ona bağlı olan tüm örnekler location_namealanlarını güncelleyecektir (ör. ON UPDATE CASCADE)
  • bir locationsatırı silerseniz , ona bağlı tüm örnekler silinir (ör. ON DELETE CASCADE)

Durumunuza daha uygun olabilecek farklı davranışlar elde etmek için yabancı anahtar kısıtlamalarını okuyun.

Ayrıca özetleyebilir samplegibi toplama işlevlerini kullanarak değerleri count, min, avgvb ve bu benzer bir mekansal görünümü olun. Bu, uzamsal olmayan tablonuza sayısal sütunlar eklerseniz en mantıklıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.