Daha çox

QGIS API istifadə edərək PostGIS qatını necə yaratmaq olar?

QGIS API istifadə edərək PostGIS qatını necə yaratmaq olar?


Yeni bir PostGIS təbəqəsi yaratmaq və ona edilmiş dəyişiklikləri saxlamaq istəyirəm.

Hal-hazırda, Psycopg2 istifadə edərək Python'u PostGIS ilə əlaqələndirirəm, ancaq QGIS API funksiyasının olub olmadığını bilmək istəyirəm.

Qeyd: Mövcud bir PostGIS qatını aça bilirəm, amma yenisini necə yaratacağımı bilmirəm.


"Qgisdə bir postgis PostGIS qatını necə yaratmaq olar"> Daha əvvəl daha aydın ola bilərdiniz! İlk cavabımı yazmağım vaxt aldı (bəri silindi).

Bu onlayn seminar və xüsusən də bu hissəyə baxa bilərsiniz.

QGIS api sənədini onsuz da bilirsiniz!


QGIS API istifadə edərək PostGIS qatını necə yaratmaq olar? - Coğrafi İnformasiya Sistemləri

sderle / Geo-Coder-US / Geo :: Coder :: US] GeoCoding üçün əla bir '' Perl '' kitabxanası [http://www.geocoder.us/ Geocoder.us]. İstifadəçilər, Sayım Bürosunun TIGER / Line məlumatlarını istifadə edərək öz Coğrafi məlumat bazalarını yarada bilərlər (aşağıya bax). * [https://svn.greenpeace.org/projects/custard/browser/doc/geodata GeoRosetta], CC-BY-SA lisenziyalı, keyfiyyətə nəzarət, coğrafi kodlama məlumatlarının toplanması. Hələ ictimaiyyətə təqdim olunmayıb (?). * [http://mapserver.gis.umn.edu/ MapServer]: Minnesota Universiteti (UMN) "məkan imkanlı internet tətbiqetmələrinin yaradılması üçün açıq mənbə inkişaf mühiti." * [http://www.mapnik.org/ Mapnik]: Xəritəçəkmə tətbiqatlarının inkişafı üçün C ++ və Python alət dəsti. MapServer-dən iddia edilən faydalar: "AGG kitabxanasından istifadə edir və coğrafi məlumatlar üçün subpiksel dəqiqliyi ilə dünya səviyyəli anti-aliasing göstərilməsini təklif edir. Müasir C ++ dilində sıfırdan yazılır və on il əvvəl verilən dizayn qərarlarından əziyyət çəkmir." '' Bax '' [http://www.mapnik.org/faq/ MapNik FAQ]. * [http://code.google.com/p/pyproj/ pyproj]: Pyrex PROJ.4 kitabxanasına python interfeysi yaratdı. * Ruby on Rails * [http://rubyforge.org/projects/georuby/ GeoRuby]: PostGIS və MySQL məkan uzantıları üçün interfeys, lakin məkan sorğusundan əmin deyiləm. * [http://www.ivygis.org/ IvyGIS]: RoR və UMN-in MapServer ilə Google-xəritələr növü ekranları * [http://thepochisuperstarmegashow.com/ProjectsDoc/spatialadapter-doc/index.html Raylar üçün Məkan Adapteri]: MySql Mekansal və PostGIS həndəsi sütunlarını şəffaf bir şəkildə idarə edən (digər əsas məlumat növü sütunları kimi) Rails üçün bir plagin. PostGIS xaricində digər məkan uzantılarını dəstəkləməyə çalışdığımız zaman bunun üçün bəzi faydalı texnika ola bilər. * [http://cartographer.rubyforge.org/ Cartographer] GMaps plagini == Faydalı Məlumat == * [http://www.census.gov/geo/www/tiger/tiger2006se/tgr2006se.html TIGER / Line]: "TIGER / Line sənədləri [http://www.census.gov/ Census Bureau's] TIGER® (Topoloji Integrated Coğrafi Kodlama və Referans) verilənlər bazasından seçilmiş coğrafi və kartoqrafik məlumatların çıxarışlarıdır." Bu məlumatlar öz coğrafi kodlama verilənlər bazası xidmətinizi yaratmağınızda faydalıdır. Hal-hazırda 2006 Second Edition sonuncudur. Qeyd: Siyahıyaalma Bürosu, 2007-ci ilin payızında [http://www.census.gov/geo/www/tiger/tgrshp.html SHP sənədləri təqdim edən] olacaqdır. = Suallar = * Suallarınızı '' 'buraya yazın . * '' 'Q:' '' Məntəqələrdən (məsələn, dərəcələrdən) bəhs edərkən, məlumatların dərəcə olduğunu nəzərə alaraq, arxa tərəfdəki məlumatlarda faydalı olması üçün çevrilmələri lazımdırmı? Eyni məlumat və mənşəyə sahib olmaq kifayətdirmi? (Yuxarıdakı tanışlığı oxumaq sualı cavablandıracaqdır.) * (JDunck) oxumam bəli deməkdir. Eyni koordinat sistemi (yəni datum, mənşə və oxlar) nəzərə alınmaqla dərəcələr çevrilmədən faydalıdır. * '' 'S:' '' Bu tətbiqetmə [http://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.html MySQL məkan uzantıları] ilə işləyə bilərmi? Olmasa, planlaşdırılır? * Xeyr. (İndi) planlaşdırılır, aşağıdakı 'Mərhələ 3-ə baxın. Sonuncu dəfə (jbronn) yoxladığım vaxtdan MySQL-in məkan imkanları yaxşılaşmışdır. Bununla birlikdə, işlər bir az daha işlənənə qədər səylərimizi PostGIS-ə yönəldəcəyik. Məkan bazası PostGIS olaraq daha çox standartlara uyğundur (OpenGIS konsorsiumu), daha geniş istifadə olunur və daha çox xüsusiyyətə malikdir (məsələn, koordinat çevrilməsi, <<>> və <<>> masalar). Bu, mütləq gələcəkdə həyata keçirmək istədiyim bir şeydir, çünki '' MySQL '' 'i sevirəm. * '' 'S:' '' Bu bir WMS Server / WMS Müştəri / Hər ikisi olacaqmı? OWSLib, gördüklərimdən yalnız bir WMS Müştərisidir (ruckc-dən) * Əvvəlcə WMS Server, müəyyən vəziyyətlərdə müştəri qabiliyyəti (yəni başqa bir WMS serverindən məlumatları önbelleğe almaq istəyirsiniz). Bəli, OWSLib bir müştəridir, lakin WMS serverinə göndərmək üçün doğru parametrləri təsdiqləyən kod ehtiva edir, beləliklə müvafiq WMS parametrlərinin verildiyini təsdiqləyən Django görünüşünə uyğunlaşdırıla bilər. Mapnikdə << var>> WMS 1.1.1 və 1.3.0 üçün doğru parametrləri təhlil edə bilən modul, lakin LGPL-də lisenziyalı olduğu üçün bu filiala asanlıqla daxil edilə bilməz (OWSLib-dən fərqli olaraq). = Tətbiq = == Mərhələ 1 == * Həndəsə effektiv sahələr və menecer yaradın. Vəziyyət: r4788 tarixindən etibarən tamamlandı. * Həndəsə imkanlı sorğulara icazə verin. Vəziyyət: r4788 tarixindən etibarən tamamlandı. == Mərhələ 2 == * '' 'Gözləyir' '' * PostGIS API-dən mümkün qədər çox əlavə edin. * Bir xəritəçəkmə çərçivəsinə dəstək (məsələn, Google Maps / Earth, Yahoo Maps, MS Live, və s.) * İdarəetmə sahələri və formaları (hal-hazırda r4884 tarixinə qədər WKT sahəsi, lakin widgetların coğrafi obyektlərə baxmasını və idarə etməsini istəyirik). * Django modellərinə birbaşa raster məlumatlarını (əvvəl SHP sənədləri) idxal etmək üçün köməkçi proqramlar. * '' 'Tamamlandı' '' * PostGIS indeksləşdirmə qabiliyyəti. * R5008-dən etibarən, birbaşa GEOS rutinlərinə zəng edən həndəsə imkanlı sahələr üçün bir GEOS sarma obyekti əlavə edildi ('' məs. '' <<>>). '' Bax '' [Aşağıdakı GeoDjango # ExtraInstanceMethods Extra Instance Methods] bölməsi) == Mərhələ 3 == * MySQL verilənlər bazalarını dəstəkləyin. * Geocoding çərçivəsində. == Dizayn Problemləri == * Müştəri JS / Flash çərçivəsi, '' yəni '', OpenLayers, Google Maps API, Yahoo API'yi dəstəkləmək istəyirikmi? * İndiyə qədər Google Xəritələr əvvəlcə dəstəklənmək üçün ən ümidverici görünür (insanlar bunu tanıyır və açıq təbəqələrdən daha sabitdir). * [http://developer.yahoo.com/maps/ Yahoo!] həqiqətən hamar bir flash interfeysə sahibdir, buna sonda dəstək olmaq istəyirəm. * [http://www.openlayers.org/ OpenLayers] Google, MSVE və Yahoo təbəqələrinin yanında WMS / WFS / plitələrini dəstəkləyir. Çox çevik və açıqdır (!!). '' (Rob Çevrilişi) '' * Xəritəçəkmə Çerçevesi (xüsusi plitələr, təbəqələr, etiketlər və s. Yaratmaq) * [http://www.mapnik.org/ Mapnik] müasirdir, lakin inkişafına çox erkən və '' tamamilə '' sənədləri yoxdur. Bununla birlikdə, kod zərif və təmizdir və Python ilə inteqrasiya üçün hazırlanmışdır - bu anda buna meyl edirik. * [http://mapserver.gis.umn.edu/ Mapserver] bir müddətdir cəmiyyətdə güclü dəstək alır (məsələn, [http://qgis.org/ QGIS] dəki yerli dəstək). Sənədlərlə belə, kod Mapnik-dən daha az qonaq görünür (hamısı C) arxaik mətn əsaslı konfiqurasiya sənədlərinə də malikdir (tanışlıqdan əvvəl işarələmə dilləri). * GEOS * '' 'Yeniləmə:' '' r5008 tarixindən etibarən GeoDjango öz GEOS interfeysinə malikdir (<< vasitəsilə>>) * GEOS artıq Sean Gillies tərəfindən təmin edilmir. '' Bax '' Sean Gillies, '' [http://zcologia.com/news/150/geometries-for-python/ Python for Geometries] '' (GEOS dəstəyinin tərk edilməsinin əsasını izah edən blog yazısı) '' baxın ' 'Sean'ın mesajı [http://geos.refractions.net/pipermail/geos-devel/2007-March/002851.html GEOS-Devel Mailing List] (5 Mart 2007). * Həm də düşünə bilər

və ya << tətbiq edin>> ehtiyac duyduğumuz rutinlər üçün sarıcı - GPL olduğu üçün PCL kodunu həqiqətən buraya bağlaya bilmir (Django BSD-yə görə lisenziyalaşdırılmışdır). * WMS Server * Cari WMS / WFS tətbiqlərindən heç biri məni qane etmir. Djangoda tətbiq olunan biri arzuolunan olardı, məsələn, <<>>. Kimsə düşünür? (OWSLib yaxşı görünür, aşağıya bax) == İşbirliyi == * PCL (Python Kartoqrafiya Kitabxanası), indi [http://www.gispython.org/ GIS Python] un bir hissəsi, onsuz da bir çox yaxşı iş görmüşdür. DRY prinsipini tətbiq edək. Bununla əlaqəli güclü əməkdaşlıq imkanları: * Xəritəçəkmə çərçivəsi * WMS / WMF Çərçivəsi - '' '[http://trac.gispython.org/projects/PCL/browser/OWSLib/trunk OWSLib]' '' bunun üçün əla görünür. (BSD lisenziyalı və vahid testləri var!) * Utilities * Verilənlər bazası nümayəndəliyi fikirləri * GEOS dəstəyi, Sean Gilles (PCL-nin aparıcı geliştiricisi) GEOS-a Python / SWIG interfeysinin saxlanmasına kömək axtarır. SWIG interfeysi artıq saxlanmırsa, müasir GEOS kitabxana dəstəyi üçün PCL-ə keçməli ola bilər. * [http://code.google.com/p/django-coordinatesfield/ CoordinatesField]. * Jannis Leidel, BSD lisenziyalı admin interfeysindəki nöqtələri idarə etmək üçün bir yol tapdı. * [http://exogen.case.edu/projects/geopy/ geopy] * Brian Beck, BSD lisenziyalı, coğrafi kodlama və məsafə hesablamaları üçün yaxşı bir təməl yazmışdır. = Nümunə = == Coğrafi Modellər == Model API-nin hazırda necə işlədiyinə bir nümunədir (bu nümunənin geo_app / models.py-də olduğunu düşünək): <<< #! Django.contrib.gis.db idxal modelləri sinfindən python Bölgə (modellər.Model, modellər.GeoMixin): ad = modellər.CharField (maksimum uzunluq = 35) num = modellər.IntegerField () poly = modellər.PolygonField () obyektlər = modellər.GeoManager () sinif Məktəbi (modellər.Model, modellər .GeoMixin): ad = modeller.CharField (maxlength = 35) point = models.PointField (index = True) objects = models.GeoManager () >>> '' 'Notes' '': <<>> sinif [GeoDjango # ExtraInstanceMethods əlavə instansiya metodlarına] imkan verir. <<>> açar sözdən Məktəb üçün bir GiST indeksinin yaradıldığını göstərmək üçün istifadə olunur <<>> sahələri. == syncdb istifadə == << istifadə edin>> çağırmaq üçün <<>> normalda etdiyiniz kimi: <<< #! sql $ python manage.py sqlall geo_app BAŞLAYIN CƏDVƏL "geo_app_school" ("id" seriyası NULL İLK AÇAR, "name" varchar (35) NULL DEYİL) CƏDVƏLİ YARAT "geo_app_drict "(" id "serialı NULL İLK AÇAR," ad "varchar (35) NULL deyil," num "tam ədədi NULL deyil) SEÇİN AddGeometryColumn ('geo_app_school', 'point', 4326, 'POINT', 2) İNDEKSİ YARAT" geo_app_school_point_id "ON" geo_app_school "GIST İSTİFADƏSİ (" point "GIST_GEOMETRY_OPS) SEÇİN AddGeometryColumn ('geo_app_district', 'poly', 4326, 'MULTIPOLYGON', 2) COMMIT $ python manage.py syncdb geo_app: '' Həndəsə sütunları << xaricində yaradılmışdır>> ifadələri>>. Bu, OpenGIS spesifikasiyasına uyğun olaraq edilir. '' Bax '' Open GIS Consortium, Inc., '' [http://www.opengis.org/docs/99-049.pdf SQL üçün OpenGIS Sadə Xüsusiyyət Xüsusiyyətləri] '', Sənəd 99-049 (5 May, 1999), Ch. 2.3.8 (Həndəsə Dəyərləri və Mekansal Referans Sistemləri, səh. 39). == Mekansal Sorğular == Bir coğrafi model yaradıldıqdan sonra API-yə PostGIS əlavələrindən istifadə edilə bilər. Coğrafi sorğular normal olaraq << istifadə edərək edilir>> və <<>> coğrafi axtarış növlərindən istifadə edən həndəsə effektiv modellərdə (axtarış növləri üçün aşağıda [GeoDjango # DatabaseAPI Database API] baxın '). Aşağıdakı nümunədə <<>> PostGIS <<< && >>> operatoru ilə eyni olan axtarış növü istifadə olunur. Çoxbucaqlının '' məhdudlaşdırıcı qutusu '' nun müəyyən nöqtəni ehtiva edib-etmədiyinə baxılır. Növbəti nümunədə PostGIS << istifadə olunur>> funksiyası, GEOS kitabxanasını '' çoxbucaqlının '' həqiqətən məhdudlaşdırma qutusunu deyil, müəyyən nöqtəni ehtiva etdiyini yoxlamaq üçün çağırır. <<< #! python >>> geo_app.models import District, School >>> qs1 = District.objects.filter (poly__bbcontains = 'POINT (-95.362293 29.756539)') >>> qs2 = District.objects.filter ( poly__contains = 'POINT (-95.362293 29.756539)') >>> Həm məkan sorğuları, həm də << istifadə edərək normal sorğular>> eyni sorğuda istifadə edilə bilər. Məsələn, aşağıdakı sorğu dəsti yalnız adlarında 'Houston' olan və çoxbucaqlı sərhədləri daxilində verilmiş nöqtəni ehtiva edən məktəb bölgələrini göstərəcəkdir: <<< #! Python >>> qs = District.objects.filter (name__contains = ') Houston '). Filter (poly__contains =' POINT (-95.362293 29.756539) ') >>> Və ya həm sərhəd qutusu rutinlərini (daha az dəqiq, sürətli) GEOS rutinləri ilə birləşdirin (ən dəqiq, daha yavaş), həm də bir sorğu əldə edin. sürətli və dəqiq: <<< #! python >>> qs = District.objects.filter (poly__bbcontains = 'POINT (-95.362293 29.756539)'). filter (poly__contains = 'POINT (-95.362293 29.756539)') >>> = Quraşdırma = GeoDjango modulunun quraşdırılması, mövcud açıq mənbəli coğrafi kitabxanaların və məkan bazasının (hazırda yalnız PostGIS) quraşdırılmasını tələb edəcəkdir. Bu bölmədə bu kitabxanalar üçün quraşdırma prosesi təsvir ediləcəkdir. Başlanğıcda, bu təlimatlar yalnız bir Linux platforması ilə əlaqəli olacaq (xüsusilə Debian və ya Ubuntu). Mac və Windows dəstəyi daha sonra nəzərdən keçiriləcək, lakin bu təlimatlar böyük ehtimalla Mac qabığı vasitəsilə işləyəcəkdir.

Windows dəstəyi üçün nəfəsinizi kəsməyin.

Ön şərtlər üçün icma dəstəyi əvvəllər düşünüləndən daha yaxşıdır, Windows dəstəyi gözləniləndən daha tez gələcəkdir. == Django == * GeoDjango << mövcuddur>> SVN-dən filial: <<< $ svn co http://code.djangoproject.com/svn/django/branches/gis django_gis $ ln -s django_gis / path / to / site-packages / django >>> == GEOS == * Ən son [http://geos.refractions.net/ GEOS] versiyası 3.0.0RC4 * '' 'Yeniləmə:' '' R5008-dən etibarən Python bağlamalarını aktivləşdirməyiniz lazım deyil '' GeoDjango öz GEOS << var>> sarğı. * <<>> Python 2.5 ilə standart olaraq gəlir. Python 2.4 çalıştırıyorsanız, <<>> ola bilər [http://sourceforge.net/project/showfiles.php?group_id=71702&package_id=71318 buradan yüklənib] * Yapılandır, hazırla və qur. <<< $ ./configure $ make # make install >>> == PROJ.4 == * Son [http://proj.maptools.org/ PROJ.4] versiyası 4.5.0 * Öncə PROJ-i yükləyin [ftp://ftp.remotesensing.org/proj/proj-datumgrid-1.3.tar.gz datum shift faylları]. Digər proqramlar (Mapserver və ya Mapnik kimi) EPSG transformasiyalarının öhdəsindən gələ bilmədikdə (çətin yolu öyrəndim), bunlar koordinat çevrilmələri üçün əlverişlidir. Bunları << içində açın / açın>> PROJ mənbəyinin alt kataloqu. Məsələn, PROJ << adlı bir qovluqda açılmışsa>>, sonra bu sənədləri <<>>. Bunu '' '' '' '' '' '' '' '' '' '' 'dan əvvəl' 'yapılandırma / qurma / qurma rəqsi "' '' '' '' 'əsərini et. * '' Bax '' [http://remotesensing.org/proj/faq.html PROJ FAQ] '' həmçinin bax '' [http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/ 0301 / msg00541.html Frank Warmerdam'ın Mapserver sualına cavabı]. * Sonra, konfiqurasiya edin və qurun. <<< $ ./configure $ make # make install >>> == PostGIS == * Ən son [http://postgis.refractions.net/download/ PostGIS] versiyası 1.2.1-dir * İlk PostGIS-i qurun və quraşdırın. Hazırda PostgreSQL v8.1 istifadə edirik. <<< $ ./configure --with-geos --with-proj $ make # make install >>> * Sonra tətbiqiniz üçün bir rol və verilənlər bazası yaradın və PostGIS funksionallığına daxil olmasına icazə verin: <<< # su - postgres $ psql postgres = # ROL GİRİŞİ OLUN postgres = # q $ createdb -O $ createlang plpgsql $ psql -d -f /usr/local/share/lwpostgis.sql $ psql -d -f / usr / local / share /spatial_ref_sys.sql $ psql = # HƏMİYYƏ_SOLUNLARINDA SƏHİFƏ VERİN, YENİLƏNİN, DAVAM EDİN, SİLİN TO = # Məkan_ref_sys ÜÇÜN GRANT SEÇİN >>> * Nəhayət <<>> məkan baxımından effektiv verilənlər bazası üçün ad və istifadəçini əks etdirmək. İndiyə qədər yalnız psycopg2 arxa tərəfini dəstəkləməyi planlaşdırırıq, beləliklə: <<>>. == GDAL == * Könüllü, lakin koordinat çevrilmələri və '' həm '' vektor (məsələn SHP) və həm də raster (məsələn, TIFF) coğrafi məlumatların oxunması / yazılması üçün olduqca faydalıdır. * Məsələn, aşağıdakı əmr SHP dosyanızı [http://en.wikipedia.org/wiki/WGS84 WGS84] (standart lat / lon) şəklində çevirir. Sonra << istifadə edərək birbaşa verilənlər bazanıza idxal edə bilərsiniz>> (PostGIS-dən yardım proqramı): <<< ogr2ogr -t_srs WGS84 output.shp input.shp >>> * Son [http://www.gdal.org/download.html GDAL] versiyası 1.4.1'dir. GEOS və Python dəstəyi ilə yapılandırın, sonra qurun və quraşdırın: <<< $ ./configure --with-geos --with-ngpython $ make # make install >>> * '' Qeyd '': Bu 'ilə edilir yeni nəsil 'SWIG Python bağlamaları. Köhnə bağlamaları aktivləşdirmək üçün tərtib bayrağı (artıq dəstəklənmir) << <---python> >>. = Model API = == Sahələr == Aşağıdakı həndəsi effektiv sahələr mövcuddur: * <<>> * <<>> * <<>> * <<>> * <<>> * <<>> * <<>> == Alan Açar Sözləri == * Model açar sözlər, məsələn: <<< #! Python django.contrib.gis.db idxal modelləri sinif Zip (models.Model, models.GeoMixin): kod = modellər.IntegerField () poly = modellər.PolygonField (srid = -1, index = True) obyekt = modellər.GeoManager () >>> * <<>> * Həndəsənin SRID (Məkan İstinad Sistemi Kimliği) verilmiş dəyərə uyğunlaşdırır. Varsayılan olaraq 4326 (WGS84). '' Bax '' Open GIS Consortium, Inc., '' [http://www.opengis.org/docs/99-049.pdf SQL üçün OpenGIS Sadə Xüsusiyyət Xüsusiyyətləri] '', Sənəd 99-049 (5 May, 1999), Ch. 2.3.8 (Həndəsə Dəyərləri və Mekansal Referans Sistemləri, səh. 39). * <<>> * True olaraq ayarlanarsa, verilmiş həndəsə üçün GiST indeksi yaradacaqdır. PostgreSQL əmri ilə indeksi yeniləyin <<>> (coğrafi cəhətdən aktivləşdirilmiş cədvəllərinizin nə qədər böyük olduğuna görə icra olunması biraz vaxt ala bilər). == Həndəsə sahələri ilə modellər yaratmaq və saxlamaq == Budur həndəsə obyektinin necə yaradılacağına dair bir nümunə (<<>> yuxarıdakı model nümunəsi): <<< #! python >>> zipcode.models-dən Zip >>> z = Zip (kod = 77096, poly = 'POLYGON ((10 10, 10 20, 20 20, 20 15) , 10 10)) ') >>> z.save () >>> Həndəsələr WKT (Yaxşı bilinən mətn) və ya HEXEWKB (PostGIS spesifik, mahiyyətcə bir WKB həndəsi) formatlarından birində' '' simlər '' '' kimi təmsil olunur. onaltılıqda). Məsələn: * WKT Polygon: <<< 'POLYGON ((10 10, 10 20, 20 20, 20 15, 10 10))' >>> * '' Bax '' Open GIS Consortium, Inc., '' [ http://www.opengis.org/docs/99-049.pdf SQL üçün OpenGIS Sadə Xüsusiyyət Xüsusiyyətləri] '', Document 99-049 (5 May 1999), at Ch. 3.2.5 (Həndəsənin SQL Mətn Təmsili, səh. 53). * HEXEWKB Çoxbucağı: '<<< 0103000000010000000. 00000000000002440 '>>> *' 'Bax' '[http://postgis.refractions.net/docs/ch04.html#id2904792 "PostGIS EWKB, EWKT and Canonical Forms"], PostGIS sənədləri Ch. 4.1.2. = Database API = '' 'Qeyd:' '' Aşağıdakı verilənlər bazası axtarış növləri yalnız << ilə coğrafi sahələrdə istifadə edilə bilər>>. 'Normal' sahələrdəki filtrlər (məs. <<>>) coğrafi sahələrdə olanlarla zəncirlənə bilər. Beləliklə, coğrafi sorğular aşağıdakı formada olur (<< olduğu təqdirdə>> yuxarıdakı [GeoDjango # ModelAPI Model API] bölməsində istifadə olunan model): <<< #! python >>> qs = Zip.objects.filter (__ =) >>> qs = Zip.objects.exclude (.) >>> == PostGIS Operator Sahəsi Axtarış Növləri == * '' Ümumiyyətlə bax '', [http://postgis.refractions.net/docs/ch06.html#id2854381 "Operators", PostGIS Documentation at Ch. 6.2.2] * '' 'Qeyd:' '' Bu API bir qədər dəyişikliyə məruz qalır - təkliflərə açıqıq. * <<>> * A-nın hüdud qutusu üst-üstə düşürsə və ya B-nin hüdud qutusunun solundadırsa, doğru qayıdır. * PostGIS ekvivalenti "<<< & >>>" * <<>> * A-nın məhdudlaşdırıcı qutusu B-nin məhdudlaşdırma qutusunun qəti şəkildə solundadırsa, doğru qayıdır. * PostGIS ekvivalenti "<<< >>>>" * <<>> * A-nın hüdud qutusu üst-üstə düşsə və ya B-nin hüdud qutusunun altındadırsa, doğru qayıdır. * PostGIS ekvivalenti "<<< & >>>" * <<>> * A-nın məhdudlaşdırıcı qutusu B-nin məhdudlaşdırma qutusunun altındadırsa, doğru qayıdır. * PostGIS ekvivalenti "<<< >>>>" * <<>> * "eyni" operator. İki xüsusiyyətin həqiqi həndəsi bərabərliyini yoxlayır. Beləliklə, A və B eyni xüsusiyyətdirsə, vertex-by-vertex, operator true qaytarır. * PostGIS ekvivalenti "<<<

=>>>" * <<>> * A-nın hüdud qutusu tamamilə B-nin hüdud qutusu ilə əhatə olunduqda doğru qayıdır. * PostGIS ekvivalenti "<<< @ >>>" * <<>> * A-nın hüdud qutusu tamamilə B-nin hüdud qutusunu ehtiva edərsə doğru qayıdır. * PostGIS ekvivalenti "<<<

>>>" * <<>> * A-nın hüdud qutusu B-nin hüdud qutusu ilə üst-üstə düşərsə doğru qayıdır. * PostGIS ekvivalenti "<<< && >>>" == PostGIS GEOS İşlev Sahəsi Axtarış Növləri == * '' Ümumiyyətlə bax '' [http://postgis.refractions.net/docs/ch06.html#id2615853 "Həndəsə əlaqəsi Funksiyalar ", PostGIS Documentation at Ch. 6.1.2]. * Bu sənədlər yuxarıda qeyd olunan PostGIS sənədlərindəki məzmunu ilə tamamilə yenilənəcəkdir. *

* '' 'Xəbərdarlıq:' '' Bu funksiya axtarış növü işləmir və << hissəsi kimi gündəlik rejimə köçürüləcəkdir.>>. * Proqnozlaşdırılan vahidlərdə iki həndəsə arasındakı kartezyen məsafəsini qaytarın. * PostGIS bərabərliyi <<>> * <<>> * GEOS tələb edir * Verilən Həndəsələr "məkan baxımından bərabərdir "sə 1 (TRUE) qaytarır. * Bunu '=' ilə müqayisədə 'daha yaxşı' cavab üçün istifadə edin. bərabərdir ('LINESTRING (0 0, 10 10)', 'LINESTRING (0 0, 5 5, 10 10)') doğrudur. * PostGIS bərabərliyi <<>>, OGC SPEC s2.1.1.2 * <<>> * GEOS tələb edir * Həndəsələr "məkan baxımından ayrılıb" olduqda 1 (TRUE) qaytarır. * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> * <<>> * PostGIS bərabərliyi <<>> == Əlavə Instant Metodları == Həndəsə sahələri olan bir model aşağıdakı metodları alacaq, əvəzinə <<>> həndəsi sahənin adı ilə: == get_GEOM_geos == a << qaytarır>> həndəsə üçün nümunə. Məsələn (<< istifadə edərək>> yuxarıdan model): <<< #! python >>> django.contrib.gis.geos'dan idxal GEOSGeometry >>> dist = District.objects.get (name = 'Houston ISD') >>> geom = dist .get_poly_geos () >>> çap geom.centroid.wkt POINT (-95.231713 29.723235) >>> çap geom.area 0.08332 >>> çap geom.geom_type poliqon >>> çap geom.centroid.geom_type nöqtəsi >>> çap geom .intersects (GEOSGeometry ('POINT (-95.395223 29.798088)')) False >>> == get_GEOM_wkt == Həndəsə üçün OGC WKT (Yaxşı bilinən mətn) qaytarır. Məsələn (<< istifadə edərək>> yuxarıdan model): <<< #! python >>> skool = School.objects.get (name = 'PSAS') >>> print skool.get_point_wkt () POINT (-95.460822 29.745463) >>> == get_GEOM_centroid == Bu rutin həndəsənin mərkəzini qaytaracaqdır. Məsələn (<< istifadə edərək>> yuxarıdan model): <<< #! python >>> dist = District.objects.get (name = 'Houston ISD') >>> print dist.get_poly_centroid () POINT (-95.231713 29.723235) >>> = = get_GEOM_area == Bu rutin həndəsə sahəsinin sahəsini qaytaracaqdır. <<< #! python >>> dist = District.objects.get (name = 'Houston ISD') >>> print dist.get_poly_area () 0.08332 >>> '' Qeyd '' ': Bölmələr proqnozlaşdırılır koordinat sisteminin vahidləri. Yuxarıdakı nümunədə, WGS84 istifadə etdiyimizdən vahidlər dərəcədir.

Burada vahidlər sisteminin müəyyənləşdirilməsi lazımdır, çünki bu vahidlərin nəyi təmsil etdiyini bilmirəm


Videoya baxın: QGIS User0015 - PostGIS Setup