Daha çox

Konveks gövdə almaq üçün sorğu


Konveks gövdə forması əldə etmək üçün aşağıdakı sorğu düzgündür:

DATA "the_geom from (seçin ST_ConvexHull (ST_Collect (the_geom)) as the the_geom FROM xyz) foo kimi benzersiz id istifadə edərək SRID = XXXX"


Redaktə edin: Yeniləmə, gecikmədən başa düşdüm ki, bu bir Map Server sualıdır.

Ümumiyyətlə, qabarıq gövdəyə sahib olmaq üçün id / gid ilə qruplaşdırmaq istəyəcəksiniz, çünki gövdə (lər) istehsal etmək ümumi bir əməliyyatdır. Beləliklə, Mapserver hissəsi olmadan sorğu belə görünür:

Xyz qrupundan id ilə SEÇİN id, ST_ConvexHull (ST_Collect (the_geom));

İndi MapServer-in bunu bir DATA tərifində başa düşməsini təmin etmək üçün belə edərdiniz:

VERİ "the_geom FROM (SELECT id SEID, ST_ConvexHull (ST_Collect (the_geom)) as the the_geom FROM xOM group by id)) some_table USING UNICQUE oid USING SRID = 4326"

sizin SRID-in 4326 olduğunu düşündüyüm yerdə.

Orijinal, səhv cavab:
Bir koordinat sistemindən digər sistemə keçmək istəmədiyiniz və ya sorğuda yalnız müəyyən bir srid ilə həndəsələr seçmək istəmədiyiniz təqdirdə SRID-ə ehtiyacınız yoxdur - lakin qarışıq srid həndəsələrinin olması bir az qeyri-adi olardı eyni sütunda. Alt sorğuya ehtiyac yoxdur, sadəcə yaza bilərsiniz,

ST_ConvexHull'ı (ST_Collect (the_geom)) SEÇİN xyz WHERE id = someid;

çıxdığım yeri dəyişdirdimthe_hullgirişdən fərqləndirməkthe_geom. Həqiqətən yalnız müəyyən bir srid ilə həndəsələr daxil etmək istəyirsənsə, bəndin sonunda st_srid (the_geom) = some_srid 'əlavə et və əlavə et.


Konveks gövdə almaq üçün sorğu - Coğrafi İnformasiya Sistemləri

GeoSpark Proqramlaşdırma Nümunələri (Scala)

val objectRDD = yeni RectangleRDD (sc, inputLocation, ofset, "csv")

val resultSize = RangeQuery.SpatialRangeQuery (objectRDD, queryEnvelope, 0) .getRawRectangleRDD (). count ()

val objectRDD = yeni RectangleRDD (sc, inputLocation, ofset, "csv")

val result = KNNQuery.SpatialKnnQuery (objectRDD, queryPoint, 1000) #### index val rectangleRDD = new RectangleRDD (sc, inputLocation2, offset2, "csv") ilə məkan qoşma sorğusu

val objectRDD = yeni RectangleRDD (sc, inputLocation, ofset, "wkt", "rtree", numPartitions)

val joinQuery = yeni JoinQuery (sc, objectRDD, rectangleRDD)

val resultSize = joinQuery.SpatialJoinQueryUsingIndex (objectRDD, rectangleRDD) .count ()

Mekansal Dayanıklı Paylanmış Məlumat Dəstləri (SRDD)

GeoSpark, Məkan RDD (SRDD) yaratmaq üçün RDD-ləri genişləndirir və maşınlar arasında SRDD məlumat elementlərini səmərəli şəkildə bölür və daha intuitiv interfeys təmin edən yeni paralelləşdirilmiş məkan (Açıq Geosptial Konsorsium (OGC) standartını izləyən həndəsi əməliyyatlar) çevrilmələri və hərəkətləri (SRDD üçün) təqdim edir. istifadəçilər üçün məkan məlumatları analitik proqramları yazmaq üçün. Bundan əlavə, GeoSpark, geniş miqyaslı məkan məlumatları üzərində məkan sorğularını (məs., Range sorğusu, KNN sorğusu və Qeyd sorğusu) icra etmək üçün SRDD qatını genişləndirir. Məkan RDD qatında həndəsi obyektlər götürüldükdən sonra, istifadəçilər yaddaş içi klaster üzərində işləyən GeoSparkın Məkan Sorğu Qenerasiya Qatında verilmiş məkan sorğusu işləmə əməliyyatlarına müraciət edə bilər, məkan obyekt-əlaqəli qapaqlarının necə saxlanıla biləcəyinə, indekslənməsinə və SRDD istifadə edərək əldə edilir və istifadəçinin tələb etdiyi məkan sorğu nəticələrini qaytarır.

(sütun, sütun. Boylam, enlik, sütun, sütun.)

(sütun, sütun. Uzunluq 1, Uzunluq 2, Enlem 1, Enlem 2, sütun, sütun.)

İki cüt uzunluq və enlik cütlükləri bir düzbucaqlının diaqonalında uzanır.

(sütun, sütun. Uzunluq 1, Enlem 1, Boylam 2, Enlem 2,.)

Hər kanalda məhdud olmayan xal var.

## Dəstəklənən məlumat formatı GeoSpark, giriş formatı olaraq vergüllə ayrılmış dəyərləri ("csv"), sekmeyle ayrılmış dəyərləri ("tsv"), yaxşı bilinən mətni ("wkt") və GeoJSON-u ("geojson") dəstəkləyir. İstifadəçilər yalnız giriş formatını Splitter kimi göstərməli və Konstruktorlara zəng edərkən Ofset olaraq bir topluda məkan məlumatının başlanğıc sütunu (lazım olduqda) təyin etməlidirlər.

GeoSpark bərabər ölçülü ("equalgrid"), R-Tree ("rtree") və Voronoi diaqramı ("voronoi") məkan bölmə metodlarını dəstəkləyir. Mekansal bölmə, obyektlərin məkan yerlərinə görə RDD-nin yenidən bölünməsidir. Mekansal bölünmüş RDD-də məkan birləşməsi çox sürətli olacaq.

GeoSpark, Dörd Ağac və R Ağacları kimi iki Məkan İndeksini dəstəkləyir.

GeoSpark hazırda Açıq Yerleşim Konsorsiumu (OGC) standartından sonra SRDDS-də İçəridə, Üst-üstə düşür, DatasetBoundary, Minimum Sərhəd Düzbucağı və Çoxbucaqlı Birlik üçün yerli dəstək təmin edir.

GeoSpark indiyə qədər SRDD-lərdə məkan üçündür sorğusu, sorğuya qoşulma və KNN sorğusu təmin edir.

Jia Yu, Jinxuan Wu, Mohamed Sarwat. "GeoSparkın nümayişi: Böyük məkan məlumatlarının işlənməsi üçün bir klaster hesablama çərçivəsi". (demo kağız) IEEE Beynəlxalq Məlumat Mühəndisliyi Konfransının hazırlanması ICDE 2016, Helsinki, FI, May 2016

Jia Yu, Jinxuan Wu, Mohamed Sarwat. "GeoSpark: Böyük miqyaslı məkan məlumatlarının emalı üçün bir klaster hesablama çərçivəsi". (qısa məqalə) ACM Coğrafi İnformasiya Sistemlərindəki İnkişafa dair Beynəlxalq Konfransın hazırlanmasında ACM SIGSPATIAL GIS 2015, Seattle, WA, USA Noyabr 2015

GeoSaprk bəzi həndəsi hesablamalar üçün JTS Plus (Genişləndirilmiş JTS Topology Suite Version 1.14) istifadə edir.

Xahiş edirəm daha ətraflı məlumat üçün JTS Topology Suite veb saytına və JTS Plus-a baxın.

### Layihə veb saytı Ən son xəbərlər və açıqlamalar üçün zəhmət olmasa GeoSpark layihəsi ilə tanış olun.

GeoSpark, Arizona Dövlət Universitetində DataSys Laboratoriyasına daxil olan layihələrdən biridir. DataSys Laboratoriyasının missiyası eksperimental məlumat idarəetmə sistemlərini (məsələn, verilənlər bazası sistemləri) dizayn etmək və inkişaf etdirməkdir.


Düzəliş rejimi (Tab)> Hamısını seçin (a)> Mesh> Vertices (Ctrl + v)> Convex Hull (h):

Konveks gövdə bmesh operatoru

bmesh.ops.convex_hull (bm, giriş, use_existing_faces)

Qabarıq gövdə

'Giriş' də zirvələrdən qabarıq bir gövdə qurur.

‘Use_existing_faces’ doğrudursa, gövdə əvvəlcədən mövcud olan bir üzün əhatə etdiyi üçbucaqları çıxarmaz.

Bütün gövdə təpələri, üzləri və kənarları ‘geom.out’ a əlavə olunur. Gövdənin içərisində bitən hər hansı bir giriş elementi (yəni bir çıxış üzü tərəfindən istifadə edilmir) ‘interior_geom’ yuvasına əlavə olunur. "İstifadə olunmamış_geom" yuvası tamamilə istifadə olunmayan bütün daxili həndəsələri özündə cəmləşdirəcəkdir. Nəhayət, ‘hole_geom’ girişdə olan və gövdənin bir hissəsi olan kənarları və üzləri ehtiva edir.

Test skripti, aktiv mesh obyekti üçün qabarıq bir gövdə yaradır.

Suzanne və qabarıq gövdə Suzanne


2 Cavablar 2

Hesab edirəm ki, nəticənizin bilinən xüsusiyyətlərindən irəli gəlir sadə dərinlik. Bir sorğu nöqtəsinin q nöqtə dəsti ilə müqayisədə q sadəliyi dərinliyi q olan P zirvələri olan sadəliklərin sayıdır. (Q-nin sərhəddə olmasına icazə vermək və ya içəridə olmasını tələb etmək üçün fərqli variantlar var, ancaq P və q-nin birləşməsinin ümumi vəziyyətdə olduğunu düşünsəniz, ümumi hiperplanetdə heç bir d + 1 nöqtəsi yoxdur , burada d ölçüsüdür, beləliklə heç bir əhəmiyyəti yoxdur).

İndi məlumdur ki, q P-nin qabarıq gövdəsində olduqda q-nin sadə dərinliyi & gt0-dır və əslində dərinliyi aşağıdan nd ilə məhdudlaşdırmaq olar, burada n - P-də nöqtələrin sayı və d - ölçüdür. . Xüsusilə, d = 2 və n & gt3 üçün bu, məhz sizin nəticənizdir.

Bunun bir sübutunun tapıldığı bir neçə yer var, burada sadə dərinlik üçün sərhədlər haqqında bəzi gözəl mühazirə qeydlərinə bir keçid var.

Budur elementar bir yanaşma. Konveks analizində intuitiv olaraq açıq, lakin sübut etmək yorucu nəticələr var.

$ C = operator adı verinP $ və $ p in C $. (İçəridə olmağa ehtiyac yoxdur.)

Carathéodory teoremindən $ m le 3 $ ($ = dim mathbb var^2+1$ ) affinely müstəqil P x-da $ x_k nöqtələri, $ p = sum_^ m mu_k x_k $ ilə $ sum_^ m mu_k = 1 $ və $ mu_k & gt 0 $.

$ M = 1 $ olarsa, P setminus içində fərqli $ x_2, x_3, x_4 seçin.$ və $ P '= təyin edin$, $ P '' = $ .

Əgər $ m = 2 $ olarsa, P setminus içində fərqli $ x_3, x_4 seçin.$ və $ P '= təyin edin$, $ P '' = $ .

Beləliklə $ m = 3 $ qəbul edə bilərik. P setminus içində hər hansı bir $ x_4 nöqtəsini seçin$ .

$ X in mathbb üçün^ 2 $ let $ bar = binom <1>$ və $ bar təyin edin = başlayın bar_1 & amp bar_2 & amp bar_3 & amp bar_4 end$. $ X_1, x_2, x_3 $ affinely müstəqil olduğundan, $ bar nöqtələri_1, bar_2, bar_3 $ xətti olaraq müstəqildir və $ ker bar$ bir ölçüyə malikdir. $ N in ker bar qoyun$ belə ki, $ n_4 & gt0 $.

$ Bar yaza biləcəyimizi unutmayın

= bar $ mu_4 = 0 $ ilə mu $.

$ Sum_ ildən^ 4 n_k = 0 $, ən azı bir $ k $ olduğunu görürük ki, $ n_k & lt 0 $. $ T ^ * = min_ edək (- < mu_k n_k> üzərində) $. $ Mu ^ * = mu + t ^ * n $ edək və qeyd edək ki, $ sum_^ 4 ( mu_k + t ^ * n_k) = 0 $ və $ mu_k + t ^ * n_k ge 0 $ və bəzi $ k in <1,2,3 > $ var ki, $ mu_k + t ^ * n_k = 0 $. İndi $ P '= qoy$ və $ P '' = $ .


Konveks gövdəli 3D fiqurun hər tərəfinin zirvələri siyahısını necə əldə etmək olar

"Konveks gövdədəki zirvələrin siyahısını necə əldə etmək olar" sualından qabarıq gövdənin hər üzünü təşkil edən hər üçbucağın təpələrinin siyahısını bir dəstdən əldə edə bilərəm. nöqtələri göstərin və ayrıca siyahının sonunda hər bir zirvə siyahısının ilk zirvəsini əlavə edərək üçbucaqları bağlayın.

Tikz istifadə edərək $ LaTeX $ rəqəmlərini qurmaq üçün bu siyahılardan istifadə edirəm. Üçbucaqlara sahib olma problemi, Tikz'in hər üçbucağı qabarıq gövdənin fərqli bir üzü və ya tərəfi olaraq həll etməsi və üçbucaqların eyni müstəvidə və ya üzdə olmasına baxmayaraq onları fərqli şəkildə kölgələməsidir. Məsələn, yuxarıda göstərilən sualdakı nöqtələrin qapalı üçbucaqları

və nəticələr qarışıqdır.

Bununla birlikdə, eyni üzdəki əlaqə xətləri istisna olmaqla, hər üzdə olan təpələrin qapalı siyahısını versəm,

onda çıxış daha aydın olur.

(Üçbucaqlar olan üzlər iki dəfə bağlanmalıdır, çünki zirvələrin siyahıları eyni uzunluğa sahib olmalıdır)

Konveks gövdənin eyni üzündə kənarları olmayan hər tərəfin yalnız yuxarı hissələrinin siyahısını necə əldə edə bilərəm?


GvSIG Desktop & # 8211 Açıq Mənbə Coğrafi İnformasiya Sistemi

gvSIG Desktop, dünya miqyasında minlərlə istifadəçi tərəfindən istifadə olunan güclü, istifadəçi dostu, qarşılıqlı əlaqəli bir GIS-dir.

GvSIG Masaüstü, vektor və raster sənədləri, verilənlər bazaları və uzaqdan işlərlə müxtəlif formatlarda işləmək asandır. Proqram coğrafi məlumatlarınızı təhlil etmək və idarə etmək üçün müxtəlif vasitələr təklif edir.

gvSIG Desktop, istifadəçilərə proqram tətbiqini inkişaf etdirməyə və xüsusi hazırlanmış həll yollarını inkişaf etdirməyə imkan verən, asanlıqla genişlənə bilən bir həll üçün hazırlanmışdır.

  • Vektor formatlarına giriş: SHP, DXF, GML, DWG, DGN, KML.
  • Rastr formatlarına giriş: BMP, GIF, TIFF, JPEG, JP2, PNG, VRT, ENVI, ERDAS (LAN, GIS, IMG), PCI Geomatics (PIX, AUX), ADF, ESRI, ILWIS (MPR, MPL) , PC Raster, ASC, PGM, PPM, IDRISI, RMF, NOS, KAP, HDR, RAW RST.
  • Uzaqdan xidmətlərə giriş: OGC (WMS, WFS, WCS, WFS-T, WPS), ArcIMS, Ecwp.
  • Verilənlər bazalarına və cədvəllərə giriş: PostGIS, ArcSDE, JDBC, CSV.
  • Displey: yaxınlaşdırma, panning, çərçivələr, axtarış.
  • Sorğu: məlumat, sahə və məsafənin ölçülməsi, köprü.
  • Seçim: nöqtə ilə, düzbucaqlı, çoxbucaqlı, təbəqə, çox xətt, dairə, bufer zonası, alfasayısal axtarış, tərs seçim, seçimi sil.
  • Axtarış: xüsusiyyətinə görə, koordinatlarına görə.
  • Geoprosessinq: bufer, kəsişmə, klip, həll, birləşmə, qabarıq gövdə, fərq, birləşmə, məkan qoşulma, XY növbə, təkzib, Sextante geosessisiyası.
  • Qrafik redaktə: hadisə təbəqələri əlavə edin, çırpın, ızgara, düzlük, əmr yığını, geri qaytar / təkrar et, kopyala, hərəkət et, simmetriya, döndür, miqyas ver, təpəni redaktə et, daxili çoxbucaqlı, matris, partla, böl, birləş, avtomatik tamamlanan çoxbucaqlı, nöqtə əlavə et, çox nöqtə, xətt, qövs, çox xətt, çoxbucaqlı, düzbucaqlı, kvadrat, dairə, ellips.
  • Alfasayısal redaktə: sahələri idarə edin, qeydləri redaktə edin, sahə kalkulyatoru.
  • Kataloq və qəzet xidməti
  • Vektor təqdimatı: unikal simvol, kəmiyyətlər (nöqtə sıxlığı, intervallar, dərəcə işarələri, mütənasib işarələr), kateqoriyalar (ifadələr, unikal dəyərlər), çoxsaylı atributlar, qənaət / yükləmə əfsanəsi, simbologiya qurucusu, simbologiya səviyyələri, simbologiya kitabxanaları.
  • Rast təmsil: parlaqlıq, kontrast, artırmaq, şəffaflığı piksel, qeyri-şəffaflıq, rəng masaları, gradiyentlər.
  • Etiketləmə: Statik etiketləmə, inkişaf etmiş etiketləmə, fərdi etiketləmə.
  • Cədvəllər: statistika, filtr, artan / azalan sıra, keçid, qoşulma, seçimi hərəkət etdirmə, ixrac, idxal sahələri, kodlaşdırma, normallaşdırma.
  • Layout qurucusu: səhifə düzeni, kartoqrafik elementlər (görünüş, əfsanə, şimal, miqyas, çərçivələr, şəkil, mətn, qrafik), şəbəkə, şablonlar.
  • Çap: PDF, Postscript, bir neçə şəkil formatına ixrac edin.
  • Şəbəkə analizi: şəbəkə topologiyası, dayanacaq meneceri, minimum yol, əlaqə, minimum genişlənmə ağacı, mənşə və # 8211 təyinat matrisi, təcili yardım / ən yaxın obyekt təminatçısı, xidmət sahələri.
  • Rastr və uzaqdan zondlama: statistika, filtrlər, histoqram, miqyas diapazonu, genişləndirin, raster sənədinə qənaət edin, vektorlaşdırma, Faiz Bölgəsi (ROI) tərifi, ümumi komponentlər, georeferans, coğrafi yerləşmə, nəzarət olunan təsnifat, lent cəbri, görüntü profilləri, qərar ağacı, əsas komponentlər, püsküllü qapaq, şəkil birləşməsi, dağılma diaqramı, mozaika.
  • Nəşr: MapServer & # 8217s WCS, WMS və WFS, Geoserver & # 8217s WFS.
  • 3B və animasiya: 3D Görünüşlər, XYZ-də proqnozlaşdırılan, eyni zamanda kürə (planet), 3D təbəqələr, 3B simbologiya, 3B redaktə, 3B çərçivə, 2B və 3B animasiya, stereo görüntüləmə (üfüqi split).
  • Topoloji: topoloji bina, topoloji redaktə, ümumiləşdirmə, tərs xətt istiqaməti, xətlərdən / -ə çoxbucaqlar, nöqtələrdən / -ə xətlər, Delaunay üçbucağı, Thiessen poliqonları, qurmaq, təmizləmək, topoloji səhv düzəltmə (Toplu rejimdə).
  • Digər: Reordinasiya Sistemləri menecerini əlaqələndirir, WMC-dən idxal / ixrac, ssenari, tərcümə meneceri.

Veb səhifə: www.gvsig.com
Dəstək: Sənədlər
İnkişaf etdirici: gvSIG Dərnəyi
Lisenziya: GNU Ümumi İctimai Lisenziyası (versiya 3 və ya sonrası)

gvSIG Desktop Java dilində yazılmışdır. Tövsiyə etdiyimiz ilə Java öyrən pulsuz kitablarpulsuz dərsliklər.

Tam kolleksiyamızı oxuyun pulsuz və açıq mənbəli proqram tövsiyə olunur. Kolleksiya bütün proqram təminatlarını əhatə edir.


Yerleşim Məlumat Elmləri üzrə Lisans Sertifikatı

Artıq bakalavr dərəcəsi almış və Yerleşim Məlumat Elmində əlavə kurs işi görmək istəyən tələbələr üçün məzun sertifikatı təqdim edirik. Kurslarımız şagirdləri məkan əsaslı məlumatlara yönəldərək müxtəlif məlumat elmləri vasitələri ilə tanış edir. Sertifikat Coğrafi Məlumat Elmləri üzrə Professional Elmlər Magistrimizi tamamlayır və proqrama giriş qapısı rolunu oynayır. Liberal İncəsənət Kollecində və Temple Universitetinin digər məzun proqramları ilə də yaxşı birləşir.


$ Mathbb-da $ n + 2 $ balın ən kiçik qabarıq qabıqları ($ n $ -Simpleks)^ n $

"$ N $ verildikdə, aşağıdakı xassə ilə $ k $ minimum dəyərini tapın: $ mathbb içərisində hər hansı bir $ k $ (fərqli) nöqtə^ n $ iki arakəsmənin qabarıq gövdələrinin kəsişməsinin boş olmaması üçün iki ayrılmış alt hissəyə bölünə bilər. "

Dəstin qabarıq gövdəsi, dəsti ehtiva edən "ən kiçik" qabarıq dəstdir. $ C $ konveks dəsti $ forall x, y in C $, $ lambda x + (1- lambda) y in C $ for leq lambda leq 1 $.

Məsələn, $ mathbb$, fərz edək ki, $ a & lt b & lt c $ ilə $ a, b, c $ üç nöqtəmiz var. Sonra bölmədə $ a $ və $ c $, digərində $ b $ olsun. Aydındır ki, $ konveks gövdəsi$ həqiqətən $ b $ keçən xətt seqmentidir.

$ Mathbb^ 2 $, məncə $ k = 4 $. Dörd işimiz var:

Vəziyyət 1: $ a, b, c, d $ dörd nöqtəsinin hamısı kollineardır. Sonra bölmələr $ ola bilər$ və $ $ və onların qabarıq gövdələri açıq şəkildə boş olmayan kəsişməyə malikdir.

Vəziyyət 2: Nöqtələrdən üçü kollineardır, deyək ki, $ a, b, c, $ ilə $ b $ arasında $ a $ və $ c $ arasında. $ D $ nöqtəsi başqa yerdədir. Sonra bölmələrin yenidən $ olmasına icazə verin$ və $ $.

Vəziyyət 3: Dörd nöqtə qabarıq dördbucaqlı zirvələri təşkil edir. Sonra qabarıq qabıqlar "çapraz" olsun.

Vəziyyət 4: Dörd nöqtə içbükey dördbucağın zirvələrini təşkil edir. Sonra nöqtələrdən üçü bir üçbucağın təpələrini təşkil edir və dördüncü nöqtə onun içərisində olardı. $ Qabarıq qabıq$ tam olaraq bu üçbucaqdır.

$ K = n + 2 $ olduğunu düşünürəm. $ Mathbb içində $ n + 1 $ nöqtələrinin qabarıq qabığı olduğunu düşünürəm^ n $, $ n $ -simpleksdir (bunun doğru qeyd olub olmadığını bilmirəm). Hər zaman $ n + 1 $ nöqtələri olan bir sadə kompleks meydana gətirə bilərik və sonra son nöqtənin ətrafında dolanmasını təmin edə bilərik. Bu nöqtə simpleksin içərisindədirsə (qabarıq qabarıq gövdə), o zaman işimiz bitdi. Bunun xaricindədirsə, simpleksimizin "üzlərinə" əsaslanaraq məkanı bölə bilərik.

Məsələn, $ mathbb^ 3 $, beş nöqtəmiz var. Dörd xalla tetraedr düzəldə bilərik. Tetraedrin $ mathbb hissəsini bölərək dörd təyyarəyə qədər uzadıla bilən dörd üzü olacaqdır.^ 3 $. Hər təyyarə boşluğu ikiyə ayırır. Beləliklə, beşinci nöqtəmiz üzün bir tərəfindədirsə, digər tərəfdə tetraedronun əlaqəli bir zirvəsi var. Bu təpənin və bu beşinci nöqtənin bölmədə, digər üç nöqtənin digərində olmasına icazə verə bilərik. Beləliklə, üçbucaqdan keçən bir xətt seqmentimiz var. Əgər nöqtənin üzlərdən birinin müstəvisində olması ilə bağlı problemlər varsa, düşünürəm ki, sadəcə üçbucaq və xətt seqmenti yaratmaqla bu vəziyyəti hesablaya bilərik.

Ancaq $ mathbb xaricində^ n $, fərziyyəni necə sübut etmək və ya təkzib etmək mənim üçün açıq deyil. Düşünürəm ki, həll üçün heç bir şey tələb olunmamalıdır, sadəcə elementar (mütləq asan və ya sadə deyil, sadəcə bir lisenziya və ya hətta orta məktəb tələbəsinin tanıya biləcəyi üsullar) metodları. Əslində heç bir cəbri həndəsə bilmirəm, amma sadə və afin həndəsənin problemlə əlaqəli olduğunu bilirəm.


2172 nömrəli ərazi üzrə vektor məlumatları

Vektor məlumatları: çoxbucaqlar, çox xətlər və reklam lövhələri / etiketlər.

Hələ oxu materialı toplamaq üçün yalnız bir yer tutucu. Gələcək daha çox şey.

Mətn uğurla yeniləndi, lakin bu səhvlərlə qarşılaşdı:

Hazırda tapşırığı bir problemə çevirə bilmirik. Zəhmət olmasa bir daha cəhd edin.

Məsələ uğurla yaradıldı, lakin şərhi hazırda yeniləyə bilmirik.

Vmora 10 Fevral 2015 şərh etdi

Pjcozzi 16 Fevral 2015 şərh etdi

@bagnell, səs çıxartmalarını ərazidəki çoxbucaqlı / polilinlər üçün bir yanaşma kimi qiymətləndirə bilərsinizmi? Performans və dəqiqlik barədə düşünün.

Çoxbucaqlar üçün necə sürətli edəcəyimi bilmirəm, qabarıq bir parçalanmaya (mütləq üçbucaqlanma kimi incə dənəli deyil) və ya hər piksel başına çoxbucaqlı nöqtə testinə (bunun 2D toxuması ilə edilərsə) ehtiyacı var. çoxbucaqlı bir toxumanı bir şəkil qat kimi rasterləşdirmək üçün bütün çatışmazlıqlara sahib olardı).

Pjcozzi 17 Fevral 2015 & # 8226 şərh etdi

@bagnell kölgə həcmi yanaşması üçün bəzi qeydlər:

  • Həqiqi çoxbucaqlının həcmin ərazi ilə kəsişdiyi yer olduğu üçün çoxbucağın özü üçün sərhəd kürəsini istifadə etməməyi unutmayın. Ediləcək ən mühafizəkar şey həcmin hüdud sferasından istifadə etməkdir, amma düşünürəm ki, daha yaxşısını edə bilərik.
  • Filtrdən qənaət etmək üçün, hündürlüyü çıxarmaq üçün maksimum hündürlükdən istifadə etmək əvəzinə, ərazi təminatçısına yüklənmiş əraziyə əsaslanan maksimum (və bəlkə də min) hündürlüyü qaytarmaq üçün bir funksiya əlavə etməliyik (bəlkə də dəqiqləşdirmə üçün geri çağırışla?) . Başlamaq üçün bu, hər birinin (və ya daha aşağı olduqda maksimum hündürlüyün) hüdud sferasına əsaslana bilər, lakin bunu düyünə görə min / max saxlayan kəmiyyətləşdirilmiş mesh uzantısı ilə çox yaxşı edə bilərik. Bu həm də bir veb xidmət ola bilər.

Pjcozzi 17 Fevral 2015 şərh etdi

Müzakirəmizə dair qeydlər reklam lövhələri / etiketlər:

  • Torpaq dərinliyi tamponu istifadə edərək vertex shader-də dərinlik testinin mənşəyi. Bunun üçün% 97 dəstəklənən VTF lazımdır (MAX_VERTEX_TEXTURE_IMAGE_UNITS).
  • Arazi təminatçısından sorğu hündürlüyü. Zərifləşdirildiyi zaman geri zəng edin. Müəssisə təbəqəsi billboardların hündürlüyünü yeniləyəcək.
  • Daha uzunmüddətli, yalnız ən yaxın / ən vacib x sayını göstərmək bacarığına ehtiyacımız ola bilər və dərinliyi sınamırıq. Bu, ərazi, bina və s. Üzərindəki yazıları görməyə imkan verir.

Pjcozzi 17 Fevral 2015 şərh etdi

Ayrıca, ekran boşluğu yanaşmalarının (kölgə həcmi, çıxartma və s.) İş vaxtı redaktəsi üçün toxuma və alt seçmə yanaşmalarından daha yaxşı olacağını gözləyirəm (alt seçmə yaxşı ola bilər, ancaq toxumanın yenidən rasterləşdirilməsini gözləyirəm, xüsusən də ondan seyrək bir quadtree düzəltdik, ağrılı bir şəkildə yavaş olardı).

Pjcozzi 17 Fevral 2015 şərh etdi

Arazi təminatçısından sorğu hündürlüyü.

Tətbiqin indi necə göründüyünə əmin deyiləm, amma hər üçbucağa kobud güc baxışından daha yaxşısını edə bilərik. Son istifadə edilən üçbucağın növbəti dəfə istifadə ediləcəyini və bitişik məlumatlarını (təxmin etdiyim müştəriyə bir dəfə əvvəlcədən hesablayın və ya ölçülü bir mesh uzantısı olaraq) və ya düz üçbucağı tapmaq üçün çini içərisindəki dörd ağac düzənliyindən istifadə edə bilərik. .

Zərifləşdirildiyi zaman geri zəng edin. Müəssisə təbəqəsi billboardların hündürlüyünü yeniləyəcək.

Bu bir veb işçisində edilə bilər, məsələn, hər dəfə yeni bir çini aldığımızda, bir veb işçi geri çağırışları (və ya hadisələri) növbə üçün bütün abunə edilmiş mövqelərə baxır. Bu, vizualizasiya üçün plitəni işləyən eyni işçi və ya vektor məlumatlarının yenilənməsini təxirə salma bahasına ərazi görselleştirme gecikməsini azaltmaq üçün ayrıca bir işçi ola bilər.

Pjcozzi 17 Fevral 2015 şərh etdi

@bagnell bəlkə də son polylines edirik. Dəhliz həndəsi və alt nümunə götürərək reklam lövhələri / etiketlər üçün quracağımız infrastrukturdan istifadə edərək onlar üçün kölgə həcmlərini qiymətləndirə bilərik. 3B naviqasiya xəritəsi ekranı üçün istifadə üçün yönümlü vizuallaşdırma metodlarının 3-cü fəsli gözəl bir müqayisədir, lakin onların alt nümunələri dəqiq seqment / üçbucaq kəsişmələrini edir - və hələ də yüksək qətnamə relyefi üçün kifayət qədər vizual keyfiyyət əldə etmir.

Krinq 18 Fevral 2015 şərh etdi

Başlamaq üçün bu, hər birinin (və ya daha aşağı olduqda maksimum hündürlüyün) hüdud sferasına əsaslana bilər, lakin bunu düyünə görə min / max saxlayan kəmiyyətləşdirilmiş mesh uzantısı ilə çox yaxşı edə bilərik.

Burada nə demək istədiyindən əmin deyiləm. Kəmiyyətləşdirilmiş mesh plitələr, kafel içindəki istənilən nöqtənin minimum və maksimum hündürlüyünü artıq bilir. İşarə etdiyiniz budur, yoxsa başqa bir şeyə ehtiyacınız var? Əslində, yüksəklik xəritələri də yük vaxtında hesablanır.

Pjcozzi 18 Fevral 2015 şərh etdi

Xeyr. Bunu edəcək. Açıqca formata baxmadım.

Pjcozzi 21 Fevral 2015 şərh etdi

@bagnell Məndə cild-cild haqqında daha çox fikir var idi.

  • Əgər onsuz da yoxdursa: məhdudlaşdırıcı kürə - & gt ekstrüde edilmiş qabarıq gövdə - & gt dəqiq test
  • Əgər onsuz da varsa: yazılmış sfera - & gt qabarıq gövdə - & gt dəqiq test (həqiqətən, dəqiq sınamadan əvvəl məhdudlaşdırıcı sferanı və çıxarılan qabarıq gövdəni yoxlayın)
  • Daha sonra: O (n) -ni bütün çoxbucaqlıların qarşısını almaq üçün BVH-ni düşünün.
  • Yəqin ki, qabarıq gövdənin buna dəyər olub olmadığını yoxlamaq üçün bir heuristə ehtiyac var, məsələn, çoxbucaqlı artıq qabarıqdır və ya bir neçə qabarıq bölgəyə bölünə bilər.
  • Düşünürəm ki, ümumi nöqtəni (və ya təyyarənin yaxınlığında?) Ekstrud olunmuş həcmdə kodlaşdırmaqla başlamalıyıq, amma şübhəsiz ki, unikal işimiz üçün optimallaşdırılmış bir versiya istəyəcəyik:
    • Arazi altında alt qapağı yoxlamağımıza ehtiyac yoxdur
    • Ümumiyyətlə, üst qapağı yoxlamalıyıq, hər üçbucağın sınağı yavaş olardı, amma düşünürəm ki, yalnız kameranın hündürlüyünü yoxlamaqla qaça bilərik. Bununla birlikdə bir problemin olacağını gözləyirəm, çünki üst qapağın sonsuz bir tessellatını qəbul edir, buna görə mühafizəkar bir hündürlüyü yoxlamalı və sonra üçbucaqları yoxlamalı ola bilərik (kamera maksimum hündürlükdən yuxarı deyilsə).

    Pjcozzi 25.04.2015 şərh etdi

    Bagnell 21 Avqust 2015 şərh etdi

    • Dinamik minimum hündürlük əlavə edin. (Dəstəklənən həndəsələrdə dəyişikliklərə ehtiyac var)
    • Daha sıx maksimum hündürlük üçün ərazini soruşun.
    • Fərqli həcm yaratmaq üçün həndəsələrə seçim əlavə edin.
    • Rəngə görə qrup?
    • Daha sərt OBB? Bəlkə üçbucaqlardan hesablayın

    93. 25 Oktyabr 2017 şərh etdi

    3D naviqasiya xəritəsi ekranı üçün istifadə yönümlü vizuallaşdırma üsulları. 2014.

    Bu şey a Avtostopçu Bələdçisi ya da bir şey

    Pjcozzi 7 Fevral 2018 şərh etdi

    Yalnız abstraktı oxudum, amma bu maraqlı ola bilər:

    Təxirə salınmış vektor xəritəsi vizuallaşdırması

    Böyük miqyaslı vektor xəritələrinin interaktiv göstərilməsi yüksək keyfiyyətli coğrafi vizual proqram sistemləri üçün əsas problemdir. Bu yazıda geniş hündürlüklü vektor xəritələrinin detallı hündürlük sahə ərazilərində görünməsi üçün yeni bir yanaşma təqdim edirik. Bizim metodumuz ərazi vizualizasiyası üzərində birbaşa ekran-məkan gölgeleme mərhələsində böyük ölçülü vektor xəritələrini göstərmək üçün təxirə salınmış bir xətt kölgələşdirmə yanaşmasından istifadə edir. Burada iştirak edən ənənəvi həndəsi çoxbucaqlı göstərmənin olmaması alqoritmimizin coğrafi informasiya sistemləri üçün şərti vektor xəritəsi göstərmə alqoritmlərini üstələməsinə imkan verir. Çevik klasterli təxirə salınmış xətt göstərmə yanaşmamız bir istifadəçiyə interaktiv şəkildə inkişaf etmiş vektor üslubu metodlarını fərdiləşdirməyə və tətbiq etməyə imkan verir, eyni zamanda bir vektor xəritəsi detalları sisteminə inteqrasiya edir.

    https://dl.acm.org/citation.cfm?doid=3002151.3002157

    @ likangning93 oxuyun və düşüncələrinizi bizə bildirin.

    Sən 15 Mar 2018 & # 8226 şərh etdi

    Hörmətli patrick və başqaları, jurnal məqaləsini yuxarıda göstərilən linkə nəzər salmaq istəyə bilərsiniz, burada daha çox mükəmməllik təhlili var:

    Hpinkos 15 Mar 2018 şərh etdi

    93. 30.04.2018 & # 8226 şərh etdi

    Bu yanaşma heyrətamiz və dəhşətlidir. Məqsəd budur ki, "sətirləri" həndəsə şəklində göstərmək əvəzinə, cari görünüşdə hər ərazi hissəsini yoxlayan bir tam ekran post prosesi keçidini həyata keçirərək bir sətir seqmentinə nə qədər yaxın olduğunu, bütün sətir seqmentlərində toxumalarda saxlanılır. vahid BVH ızgarasından istifadə etmək.

    Həssas məsələlərlə bağlı təsdiqlənməmiş narahatlıqlar bir yana, nəhayət bir GPU BVH keçidi yazmağın vaxtı gəldi? Nəhayət mənim vaxtımdır ?!

    [EDIT] problemlərin həqiqi siyahısı tamamdır:

    • yuxarıda göstərilən dəqiqlik məsələləri: bu sənəd ərazi hissələrini "dünya koordinatları" na geri layihələyir və daha sonra xətlərə "yaxın" olub-olmadığını 2D yoxlayır. "Dünya koordinatımız" məkanımızın nə qədər böyük olduğunu nəzərə alsaq, kifayət qədər dəqiqlik əldə edə bilməyəcəyimizdən şübhələnirəm
    • eyni zamanda, bu 2D yoxlama işi - bu bir dünyada yaxşı işləmir, bir sıra yerli koordinat sistemlərini təyin etməlisiniz. Və ya bəlkə hər şeyi sferik koordinatlara düzəldin? Ancaq bu, öz dəqiqliyi / dəqiqliyi məsələləri ilə gəlir.
    • xətlərin əlavə edilməsi / çıxarılması nə qədər bahalıdır? Yeniləmək üçün bir çox məlumat strukturu kimi görünür.
    • bu, Müəssisələr / Primitivlərlə necə inteqrasiya edərdi? Bu texnika bütün polilinləri tək bir sabit ötürmə dəstinə yığmağa çalışır.
    • klasterdəki sətir sayının klasterin piksel ayırmasını üstələdiyi zaman necə davranmaq olar? Başqa bir polyline kolleksiyası əlavə edilsin?

    Fəqət düşüncəyə aşiq oluram, bu təhlükəlidir. Görəsən nə qədər riyaziyyatla göz boşluğuna keçə bilərik. və toxuma qismən yeniləmələr deyil ki yavaş. və şamandıra toxumalarında polinellərin ikiqat dəqiqliklə saxlanılması mümkündür.

    93. 30.04.2018 & # 8226 şərh etdi

    Arazi üzərində çox xətlərin göstərilməsinə ekran-kosmik yanaşma

    Bu texnika ilə sahib olduğum bir mal əti həm divar, həm də kölgə həcmi göstərmək tələbidir, çünki WebGL bizim üçün daha bahalı görünür. Bununla birlikdə, bunu # 6393-də fraqmentlərin götürülməsi üçün toplu cədvəldən istifadə edən fikirlərlə birləşdirərək düşünürəm:

    • hər sətir seqmenti üçün incə bir həcm göstərin, başlanğıc / bitiş mövqeləri üçün toplu kimlik xəritəsini və bir vektoru və ya başlanğıc / bitişlə götürülmüş bir şeyi daşıyaraq ellipsoidə toxunan XY müstəvisi ilə yerli koordinat sistemini təsvir edin.
    • hər fraqment üçün kürənin dərinliyinə baxın və göz boşluğu vəziyyətini hesablayın. Yerdəki koordinat sisteminin XY müstəvisindəki vəziyyəti və başlanğıc / bitmə mövqelərini göz boşluğuna çevirdiniz və eyni şəkildə sıxılmış olan başlanğıc / bitmə ilə bərabərliyi yoxlayın.

    Z-i erkən söndürməli oluruq, məsələn, kamera həcmlərə çox yaxından baxırsa, bir cildin "üstü" bitişik cildlərin üstünə çəkilsə. Ancaq bəlkə də bunu bir keçid qədər azaltmaq üçün bu qədər böyük bir qiymət deyildir.

    Kamera məsafəsinə əsasən mövqelərə əlavə olunan normal bir zirvə atributu istifadə edərək kölgə həcminin "qalınlığını" da bəlkə də modulyasiya edə bilərik.

    Toplu masa istehlakı üçün zərf riyaziyyatının bir hissəsi:

    • Hər biri 10 xalla olan 5000 polinil 5000 * 9 = 45,000 seqment və toplu masa girişlərini təşkil edir
    • hər seqmentin başlanğıc mövqeyi üçün 1 yüksək dəqiqlikli vec3 mövqeyi, son vəziyyətə çatmaq üçün 1 vec3 ofseti və 1 sadəlövh vec3 normal olduğunu deyək. Bu 12 ədəddir, buna görə bütün məlumatları 3 toxuma böldük deyək
    • bu çox dəhşətli görünməyən 3 256 x 256 RBGA üzən toxuma kimi bir şeydir

    93. 30.04.2018 şərh etdi

    Colinearity yanaşması da bizə stil məhsulları etmək üçün vacib ola biləcək məlumatlar verir.

    93. 30.04.2018 & # 8226 şərh etdi

    Sual: burada istədiyimiz maddi dəstəyin həcmi nə qədərdir? Zəhmli bir inkişaf var Polyline Color sandcastle və mən. fraqment məkanında işləyərkən bunu necə edəcəyimizi bilmirik.

    Bir şey hər seqmentə iki rəng keçir və bəlkə də lerp.

    Pjcozzi 30.04.2018 şərh etdi

    Stil üçün rəng və xətt genişliyindən başlayın. Sonra tire. Sonra toxumalar.

    93. 1 May 2018 & # 8226 şərh etdi

    Beləliklə, yuxarıdakı "xətlər üçün tək keçid kölgəsi həcmi" fəndində ərazidə çox xətlər üçün şərti bir kölgə həcmi alqoritmi ilə eyni problemlər var, yəni sabit ekran məkanının genişliyini saxlamaqda çətinlik çəkir:

    • dik bir yamacın qradiyentinə perpendikulyar olaraq çəkildikdə və divara baxıldıqda
    • düz yerdə üfüqə baxan açılarla baxıldıqda

    Ancaq tək keçidli olduğundan və hər hansı bir xüsusi göstərmə vəziyyətinə ehtiyac olmadığından, adi bir kölgə həcminin edə bilmədiyi @ pjcozzi divar alqoritmi ilə hələ də bir çəkmə çağırışı paylaşa bilər. Beləliklə, bu hələ də ümidverici bir şeydir.

    [EDİT] düşünürük ki, "Təxirə salınmış vektor xəritəsi vizuallaşdırması" yəqin ki, bir parça bir xətt seqmentinin bir hissəsi olub olmadığını yoxlamaq üçün 2B əlaqələndirmə texnikasına bənzər bir şey olduğundan, ləkələrdən və kənar problemlərdən əziyyət çəkir.

    93. 11 May 2018 şərh etdi

    "xətlər üçün tək keçid kölgəsi həcmi" hiylə

    Düşünürəm ki, bu texnikanın bir gameplan yığmağa başlayacağımıza dair kifayət qədər vədi var. Budur prototipimin müxtəlif görüntü məsafələrindəki bir neçə görüntüsü, "sabit ekran genişliyi" ni ağlabatan şəkildə simulyasiya etməyimiz lazımdır:

    | |

    :-------------------------:|:-------------------------:|:-----------:
    yaxın | uzaq | harada olursan ol

    İbtidai API vasitəsilə bunun xüsusi bir Həndəsə növü (bir sıra Həndəsə İnsanları düzəldən bir metodla istifadə ediləcək) və həqiqətən İbtidai ətrafında yüngül bir bükücü olacaq, ancaq dolaşmaq məcburiyyətində qala bilən xüsusi bir ibtidai tip kimi bir şeyə bənzəyəcəyini düşünürəm. ərazi məlumatı üçün bir az GroundPrimitive ilə.

    Buna baxmayaraq Entity API-yə necə inteqrasiya olunmalıdır? Polyline varlıqlarına əlavə edə biləcəyiniz bir onTerrain bayrağı kimi bir şey? Əminəm ki, bunun üçün xüsusi ibtidaiyə görə başlıq altında öz spagetti yeniləyicilərə və batcherlara ehtiyac olacaqdır.

    Sadə rənglərlə məhdud maddi dəstəklə başlamaq da ən ağıllı ola bilər, amma tam maddi dəstəyin tezliklə nə qədər çətin olacağı barədə daha konkret bir fikir sahibi olmağa çalışacağam.


    Coğrafi İnformasiya Sistemləri: Coğrafi İnformasiya Sistemləri: Nə Məqsədlidirlər

    Coğrafi İnformasiya Sistemləri (CİS) dağlar, göllər, evlər, yollar, tunellər kimi coğrafi obyektləri əks etdirən məkan məlumatlarının saxlanılması, təhlili və görselləşdirilməsinə xidmət edir. Məkan məlumatları üçün həndəsi (məkan) atributlar əsas rol oynayır, məsələn. təyyarədəki nöqtələr, xətlər və bölgələr və ya 3 ölçülü fəzadakı həcmlər. Geodeziya ölçmə nöqtələri, bitişik torpaq hissələri (kadastr verilənlər bazasında), göllər və ya istirahət parkı bölgələri (turizm məlumat sistemində) arasındakı sərhəd xətləri kimi real dünyanın coğrafi xüsusiyyətlərini modelləşdirirlər. Üç ölçüdə məkan məlumatları tunelləri, şəhərlərdəki yeraltı boru sistemlərini, dağ silsilələrini və ya ocaqları təsvir edir. In addition, spatial data in a GIS possess non-geometric, so-called thematic attributes, such as the time when a geodesic measurement was taken, the name of the owner of a piece of land in a cadastral database, the usage history of a park.

    This chapter aims to highlight some of the data structures and algorithms aspects of GISs that define challenging research problems, and some that show interesting solutions. More background information and deeper technical expositions can be found in books such as [38, 64, 66, 75].

    Geometric Objects

    Our technical exposition will be limited to geometric objects with a vector representation. Here, a point is described by its coordinates in the Euclidean plane with a Cartesian co- ordinate system. We deliberately ignore the geographic reality that the earth is (almost) spherical, to keep things simple. A line segment is defined by its two end points. A polygonal line is a sequence of line segments with coinciding endpoints along the way. A (simple) polygonal region is described by its corner points, in clockwise (or counterclockwise) order around its interior. In contrast, in a raster representation of a region, each point in the region, discretized at some resolution, has an individual representation, just like a pixel in a raster image. Satellites take raster images at an amazing rate, and hence raster data abound in GISs, challenging current storage technology with terabytes of incoming data per day. Nevertheless, we are not concerned with raster images in this chapter, even though some of the techniques that we describe have implications for raster data [58]. The reason for our choice is the different flavor that operations with raster images have, as compared with vector data, requiring a chapter of their own.

    Topological versus Metric Data

    For some purposes, not even metric information is needed it is sufficient to model the topology of a spatial dataset. How many states share a border with Iowa? is an example of a question of this topological type. In this chapter, however, we will not specifically study the implications that this limitation has. There is a risk of confusing the limitation to topological aspects only with the explicit representation of topology in the data structure. Here, the term explicit refers to the fact that a topological relationship need not be computed with substantial effort. As an example, assume that a partition of the plane into polygons is stored so that each polygon individually is a separate clockwise sequence of points around its interior. In this case, it is not easy to find the polygons that are neighbors of a given polygon, that is, share some boundary. If, however, the partition is stored so that each edge of the polygon explicitly references both adjacent polygons (just like the doubly connected edge list in computational geometry [62]), then a simple traversal around the given polygon will reveal its neighbors. It will always be an important design decision for a data structure which representation to pick.

    Geometric Operations

    Given this range of applications and geometric objects, it is no surprise that a GIS is expected to support a large variety of operations. We will discuss a few of them now, and then proceed to explain in detail how to perform two fundamental types of operations in the remainder of the chapter, spatial searching and spatial join. Spatial searching refers to rather elementary geometric operations without which no GIS can function. Here are a few examples, always working on a collection of geometric objects, such as points, lines, polygonal lines, or polygons. A nearest neighbor query for a query point asks for an object in the collection that is closest to the query point, among all objects in the collection. A distance query for a query point and a certain distance asks for all objects in the collection that are within the given distance from the query point. A range query (or window query) for a query range asks for all objects in the collection that intersect the given orthogonal window. A ray shooting query for a point and a direction asks for the object in the collection that is hit first if the ray starts at the given point and shoots in the given direction. A point- in-polygon query for a query point asks for all polygons in the collection in which the query point lies. These five types of queries are illustrations only many more query types are just as relevant. For a more extensive discussion on geometric operations, see the chapters on geometric data structures in this Handbook. In particular, it is well understood that great care must be taken in geometric computations to avoid numeric problems, because already tiny numerical inaccuracies can have catastrophic effects on computational results. Practically all books on geometric computation devote some attention to this problem [13, 49, 62], and geometric software libraries such as CGAL [11] take care of the problem by offering exact geometric computation.

    Geometric Data Structures

    Naturally, we can only hope to respond to queries of this nature quickly, if we devise and make use of appropriate data structures. An extra complication arises here due to the fact that GISs maintain data sets too large for internal memory. Data maintenance and analysis operations can therefore be efficient only if they take external memory properties into account, as discussed also in other chapters in this Handbook. We will limit ourselves here to external storage media with direct access to storage blocks, such as disks (for raster data, we would need to include tertiary storage media such as tapes). A block access to a random block on disk takes time to move the read-write-head to the proper position (the latency), and then to read or write the data in the block (the transfer). With today’s disks, where block sizes are on the order of several kBytes, latency is a few milliseconds, and transfer time is less. Therefore, it pays to read a number of blocks in consecution, because they require the head movement only once, and in this way amortize its cost over more than one block. We will discuss in detail how to make use of this cost savings possibility.

    All operations on an external memory geometric data structure follow the general filter- refinement pattern [54] that first, all relevant blocks are read from disk. This step is a first (potentially rough) filter that makes a superset of the relevant set of geometric objects available for processing in main memory. In a second step, a refinement identifies the exact set of relevant objects. Even though complicated geometric operators can make this refinement step quite time consuming, in this chapter we limit our considerations to the filter step. Because queries are the dominant operations in GISs by far, we do not explicitly discuss updates (see the chapters on external memory spatial data structures in this Handbook for more information).

    Applications of Geographic Information

    Before we go into technical detail, let us mention a few of the applications that make GISs a challenging research area up until today, with more fascinating problems to expect than what we can solve.

    Maps are the most well-known visualizations of geographical data. In its simplest form, a map is a partition of the plane into simple polygons. Each polygon may represent, for instance, an area with a specific thematic attribute value. For the attribute land use, polygons can stand for forest, savanna, lake areas in a simplistic example, whereas for the attribute state, polygons represent Arizona, New Mexico, Texas. In a GIS, each separable aspect of the data (such as the planar polygonal partitions just mentioned) is said to define a qat. This makes it easy to think about certain analysis and viewing operations, by just superimposing (overlaying) layers or, more generally, by applying Boolean operations on sets of layers. In our example, an overlay of a land use map with a state map defines a new map, where each new polygon is (some part of) the intersection of two given polygons, one from each layer. İldə map overlay in general, a Boolean combination of all involved thematic attributes together defines polygons of the resulting map, and one resulting attribute value in our example are the savannas of Texas. Map overlay has been studied in many different contexts, ranging from the special case of convex polygons in the partition and an internal memory plane-sweep computation [50] to the general case that we will describe in the context of spatial join processing later in this chapter.

    Map visualization is an entire field of its own (traditionally called cartography), with the general task to layout a map in such a way that it provides just the information that is desired, no more and no less one might simply say, the map looks right. What that means in general is hard to say. For maps with texts that label cities, rivers, and the like, looking right implies that the labels are in proper position and size, that they do not run into each other or into important geometric features, and that it is obvious to which geometric object a label refers. Many simply stated problems in map labeling turn out to be NP-hard to solve exactly, and as a whole, map labeling is an active research area with a variety of unresolved questions (see [47] for a tutorial introduction).

    Cartographic Generalization

    If cartographers believe that automatically labeled maps will never look really good, they believe even more that another aspect that plays a role in map visualization will always need human intervention, namely map generalization. Generalization of a map is the process of reducing the complexity and contents of a map by discarding less important information and retaining the more essential characteristics. This is most prominently used in producing a map at a low resolution, given a map at a high resolution. Generalization ensures that the reader of the produced low resolution map is not overwhelmed with all the details from the high resolution map, displayed in small size in a densely filled area. Generalization is viewed to belong to the art of map making, with a whole body of rules of its own that can guide the artist [9, 46]. Nevertheless, computational solutions of some subproblem help a lot, such as the simplification of a high resolution polygonal line to a polygonal line with fewer corner points that does not deviate too much from the given line. For line simplification, old algorithmic ideas [16] have seen efficient implementations [28] recently. Maps on demand, with a selected viewing window, to be shown on a screen with given resolution, imply the choice of a corresponding scale and therefore need the support of data structures that allow the retrieval up to a desired degree of detail [4]. Apart from the simplest aspects, automatic map generalization and access support are open problems.

    Maps have been used for ages to plan trips. Hence, we want networks of roads, railways, and the like to be represented in a GIS, in addition to the data described above. This fits naturally with the geometric objects that are present in a GIS in any case, such as polygonal lines. A point where polygonal lines meet (a node) can then represent an intersection of roads (edges), with a choice which road to take as we move along. The specialty in storing roads comes from the fact that we want to be able to find paths between nodes efficiently, for instance in car navigation systems, while we are driving. The fact that not all roads are equally important can be expressed by weights on the edges. Because a shortest path

    Coğrafi İnformasiya Sistemləri 55-5

    computation is carried out as a breadth first search on the edge weighted graph, in one way or another (e.g. bidirectional), it makes sense to partition the graph into pages so as to minimize the weight of edges that cross the cuts induced by the partition. Whenever we want to maintain road data together with other thematic data, such as land use data, it also makes sense to store all the data in one structure, instead of using an extra structure for the road network. It may come as no surprise that for some data structures, partitioning the graph and partitioning the other thematic aspects go together very well (compromising a little on both sides), while for others this is not easily the case. The compromise in partitioning the graph does almost no harm, because it is NP-complete to find the optimum partition, and hence a suboptimal solution of some sort is all we can get anyway. Even though this type of heuristic approaches for maintaining road networks in GIS are useful [69], it is by no means clear whether this is the best that can be achieved.

    Spatiotemporal Data

    Just like for many other database applications, a time component brings a new dimension to spatial data (even in the mathematical sense of the word, if you wish). How did the forest areas in New Mexico develop over the last 20 years? Questions like this one demonstrate that for environmental information systems, a specific branch of GISs, keeping track of developments over time is a must. Spatiotemporal database research is concerned with all problems that the combination of space with time raises, from models and languages, all the way through data structures and query algorithms, to architectures and implementations of systems [36]. In this chapter, we refrain from the temptation to discuss spatiotemporal data structures in detail see Chapter 22 for an introduction into this lively field.

    The development of spatial data over time is interesting not only for explicit queries, but also for data mining. Here, one tries to find relevant patterns in the data, without knowing beforehand the character of the pattern (for an introduction to the field of data mining, see [27]).

    Let us briefly look at a historic example for spatial data mining: A London epidemiologist identified a water pump as the centroid of the locations of cholera cases, and after the water pump was shut down, the cholera subsided. This and other examples are described in [68]. If we want to find patterns in quite some generality, we need a large data store that keeps track of data extracted from different data sources over time, a so- called data warehouse. It remains as an important, challenging open problem to efficiently run a spatial data warehouse and mine the spatial data. The spatial nature of the data seems to add the extra complexity that comes from the high autocorrelation present in typical spatial data sets, with the effect that most knowledge discovery techniques today perform poorly. This omnipresent tendency for data to cluster in space has been stated nicely [74]: Everything is related to everything else but nearby things are more related than distant things. For a survey on the state of the art and the challenges of spatial data