Hơn

Truy vấn để có được vỏ lồi

Truy vấn để có được vỏ lồi


Truy vấn dưới đây có đúng không để có được hình dạng thân lồi:

DỮ LIỆU "the_geom from (select ST_ConvexHull (ST_Collect (the_geom)) As the_geom FROM xyz) as foo sử dụng id duy nhất bằng SRID = XXXX"


CHỈNH SỬA: Cập nhật, đã muộn màng nhận ra đây là một câu hỏi của Máy chủ Bản đồ.

Nói chung, để có được vỏ lồi, bạn sẽ muốn nhóm theo id / gid, vì việc tạo ra (các) vỏ là một hoạt động tổng hợp. Vì vậy, nếu không có phần Mapserver, truy vấn sẽ giống như sau:

SELECT id, ST_ConvexHull (ST_Collect (the_geom)) làm the_geom từ nhóm xyz theo id;

Bây giờ, để MapServer hiểu điều này trong định nghĩa DATA, bạn sẽ làm:

DỮ LIỆU "the_geom FROM (SELECT id as oid, ST_ConvexHull (ST_Collect (the_geom)) as the_geom FROM xyz group by id) as some_table USING UNIQUE oid USING SRID = 4326"

trong đó tôi đã giả định SRID của bạn là 4326.

Câu trả lời ban đầu, không chính xác:
Bạn hoàn toàn không cần SRID, trừ khi bạn muốn chuyển đổi từ hệ tọa độ này sang hệ tọa độ khác, hoặc bạn chỉ muốn chọn các hình có một đường lưới nhất định trong truy vấn - nhưng sẽ hơi bất thường nếu có các hình dạng lưới hỗn hợp trong cùng một cột. Không cần truy vấn phụ, bạn có thể viết,

CHỌN ST_ConvexHull (ST_Collect (the_geom)) làm the_hull TỪ xyz WHERE id = someid;

nơi tôi đã thay đổi đầu ra thànhthân tàuđể phân biệt với đầu vàothe_geom. Nếu bạn thực sự muốn chỉ bao gồm các hình học với một srid nhất định, hãy thêm và st_srid (the_geom) = some_srid 'vào cuối mệnh đề where.


Truy vấn lấy thân tàu lồi - Hệ thống thông tin địa lý

Ví dụ về lập trình GeoSpark (Scala)

val objectRDD = new RectangleRDD (sc, inputLocation, offset, "csv")

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

val objectRDD = new RectangleRDD (sc, inputLocation, offset, "csv")

val result = KNNQuery.SpatialKnnQuery (objectRDD, queryPoint, 1000) #### Truy vấn nối không gian với chỉ mục val hình chữ nhậtRDD = new RectangleRDD (sc, inputLocation2, offset2, "csv")

val objectRDD = new RectangleRDD (sc, inputLocation, offset, "wkt", "rtree", numPartitions)

val joinQuery = new JoinQuery (sc, objectRDD, chữ nhậtRDD)

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

Tập dữ liệu phân tán có khả năng phục hồi không gian (SRDD)

GeoSpark mở rộng các RDD để tạo thành các RDD không gian (SRDD) và phân vùng hiệu quả các phần tử dữ liệu SRDD giữa các máy và giới thiệu các phép toán không gian song song mới (các phép toán hình học tuân theo tiêu chuẩn Open Geosptial Consortium (OGC)) (cho SRDD) cung cấp giao diện trực quan hơn để người dùng viết các chương trình phân tích dữ liệu không gian. Hơn nữa, GeoSpark mở rộng lớp SRDD để thực thi các truy vấn không gian (ví dụ: truy vấn Phạm vi, truy vấn KNN và truy vấn Tham gia) trên các tập dữ liệu không gian quy mô lớn. Sau khi các đối tượng hình học được truy xuất trong lớp RDD không gian, người dùng có thể gọi các hoạt động xử lý truy vấn không gian được cung cấp trong Lớp xử lý truy vấn không gian của GeoSpark chạy trên cụm trong bộ nhớ, quyết định cách các bộ dữ liệu quan hệ đối tượng không gian có thể được lưu trữ, lập chỉ mục và được truy cập bằng SRDD và trả về kết quả truy vấn không gian theo yêu cầu của người dùng.

(cột, cột. Kinh độ, Vĩ độ, cột, cột.)

(cột, cột. Kinh độ 1, Kinh độ 2, Vĩ độ 1, Vĩ độ 2, cột, cột.)

Hai cặp kinh độ và vĩ độ thể hiện các đỉnh nằm trên đường chéo của một hình chữ nhật.

(cột, cột. Kinh độ 1, Vĩ độ 1, Kinh độ 2, Vĩ độ 2,.)

Mỗi tuple chứa điểm không giới hạn.

## Định dạng dữ liệu được hỗ trợ GeoSpark hỗ trợ Giá trị được phân tách bằng dấu phẩy ("csv"), giá trị được phân tách bằng tab ("tsv"), Văn bản nổi tiếng ("wkt") và GeoJSON ("geojson") làm định dạng đầu vào. Người dùng chỉ cần chỉ định định dạng đầu vào là Splitter và cột bắt đầu (nếu cần) của thông tin không gian trong một bộ dưới dạng Offset khi gọi Constructors.

GeoSpark hỗ trợ các phương pháp phân vùng không gian kích thước bằng nhau ("equalgrid"), R-Tree ("rtree") và Voronoi diagram ("voronoi"). Phân vùng không gian là phân vùng lại RDD theo vị trí không gian của các đối tượng. Tham gia không gian trên RDD phân chia không gian sẽ rất nhanh.

GeoSpark hỗ trợ hai chỉ mục không gian, Quad-Tree và R-Tree.

GeoSpark hiện cung cấp hỗ trợ gốc cho Inside, Overlap, DatasetBoundary, Minimum Bound Rectangle và Polygon Union trong SRDDS theo tiêu chuẩn Open Geospatial Consortium (OGC).

GeoSpark cho đến nay cung cấp truy vấn phạm vi không gian, truy vấn nối và truy vấn KNN trong SRDDs.

Jia Yu, Jinxuan Wu, Mohamed Sarwat. "Trình diễn GeoSpark: Khung điện toán cụm để xử lý dữ liệu không gian lớn". (demo paper) Kỷ yếu Hội nghị Quốc tế IEEE về Kỹ thuật Dữ liệu ICDE 2016, Helsinki, FI, tháng 5 năm 2016

Jia Yu, Jinxuan Wu, Mohamed Sarwat. "GeoSpark: Khung điện toán cụm để xử lý dữ liệu không gian quy mô lớn". (báo cáo ngắn) Kỷ yếu Hội nghị Quốc tế ACM về những Tiến bộ trong Hệ thống Thông tin Địa lý ACM SIGSPATIAL GIS 2015, Seattle, WA, Hoa Kỳ Tháng 11 năm 2015

GeoSaprk sử dụng JTS Plus (Một bộ cấu trúc liên kết JTS mở rộng Phiên bản 1.14) cho một số tính toán hình học.

Vui lòng tham khảo trang web JTS Topology Suite và JTS Plus để biết thêm chi tiết.

### Trang web của dự án Vui lòng truy cập wesbite của dự án GeoSpark để biết tin tức và phát hành mới nhất.

GeoSpark là một trong những dự án thuộc Phòng thí nghiệm DataSys tại Đại học Bang Arizona. Nhiệm vụ của DataSys Lab là thiết kế và phát triển các hệ thống quản lý dữ liệu thử nghiệm (ví dụ: hệ thống cơ sở dữ liệu).


Chế độ chỉnh sửa (Tab)> Chọn Tất cả (a)> Lưới> Dọc (Ctrl + v)> Convex Hull (h):

Toán tử bmesh thân lồi

bmesh.ops.convex_hull (bm, input, use_existing_faces)

Hull lồi

Tạo một vỏ lồi từ các đỉnh trong 'đầu vào'.

Nếu ‘use_existing_faces’ là true, thân tàu sẽ không xuất ra các hình tam giác được bao phủ bởi một mặt có sẵn.

Tất cả các đỉnh, mặt và cạnh của thân đều được thêm vào ‘geom.out’. Bất kỳ phần tử đầu vào nào kết thúc bên trong thân tàu (tức là không được sử dụng bởi một mặt đầu ra) đều được thêm vào vị trí ‘internal_geom’. Khe cắm ‘chưa sử dụng_geom’ sẽ chứa tất cả các hình học bên trong hoàn toàn không được sử dụng. Cuối cùng, ‘lỗ_geom’ chứa các cạnh và mặt nằm trong đầu vào và là một phần của thân tàu.

Tập lệnh kiểm tra, tạo vỏ lồi cho đối tượng lưới hoạt động.

Suzanne và thân tàu lồi Suzanne


2 câu trả lời 2

Tôi nghĩ kết quả của bạn theo sau từ các thuộc tính đã biết của độ sâu đơn giản. Độ sâu đơn giản của một điểm truy vấn q đối với một tập điểm P là số lượng đơn giản với các đỉnh của P chứa q. (Có các tùy chọn khác nhau để cho phép q nằm trên ranh giới hoặc yêu cầu nó ở bên trong, nhưng nếu bạn giả sử rằng sự kết hợp của P và q ở vị trí chung, có nghĩa là không có điểm d + 1 nào nằm trên một siêu phẳng chung , trong đó d là thứ nguyên, do đó không quan trọng).

Bây giờ người ta biết rằng độ sâu đơn giản của q là & gt0 bất cứ khi nào q nằm trong phần lồi của P, và trên thực tế độ sâu có thể được giới hạn từ bên dưới bởi nd, trong đó n là số điểm trong P và d là thứ nguyên . Đặc biệt, đối với d = 2 và n & gt3, đây chính xác là kết quả của bạn.

Có một số nơi, nơi có thể tìm thấy bằng chứng về điều đó, đây là liên kết đến một số ghi chú bài giảng hay về giới hạn cho độ sâu đơn giản.

Đây là một cách tiếp cận cơ bản. Phân tích lồi có kết quả hiển nhiên bằng trực giác nhưng rất tẻ nhạt để chứng minh.

Cho $ C = operatornameP $ và $ p trong C $. (Không cần phải ở bên trong.)

Từ định lý Carathéodory có $ m le 3 $ ($ = dim mathbb^2+1$ ) độc lập thân thiện điểm $ x_k trong P $ sao cho $ p = sum_^ m mu_k x_k $ với $ sum_^ m mu_k = 1 $ và $ mu_k & gt 0 $.

Nếu $ m = 1 $ thì chọn $ x_2, x_3, x_4 riêng biệt trong P setminus $ và đặt $ P '= $, $ P '' = $ .

Nếu $ m = 2 $ thì chọn $ x_3, x_4 riêng biệt trong P setminus $ và đặt $ P '= $, $ P '' = $ .

Vì vậy, chúng ta có thể giả sử $ m = 3 $. Chọn điểm bất kỳ $ x_4 trong P setminus $ .

Với $ x in mathbb^ 2 $ let $ bar = binom <1>$ và xác định $ bar = begin quán ba_1 & amp bar_2 & amp bar_3 & amp bar_4 end$. Vì $ x_1, x_2, x_3 $ hoàn toàn độc lập nên các điểm $ bar_1, bar_2, bar_3 $ độc lập tuyến tính nên $ ker bar$ có thứ nguyên một. Cho $ n vào ker bar$ sao cho $ n_4 & gt0 $.

Lưu ý rằng chúng ta có thể viết $ bar

= bar mu $ với $ mu_4 = 0 $.

Kể từ $ sum_^ 4 n_k = 0 $ ta thấy rằng có ít nhất một $ k $ sao cho $ n_k & lt 0 $. Cho $ t ^ * = min_ (- < mu_k over n_k>) $. Cho $ mu ^ * = mu + t ^ * n $ và lưu ý rằng $ sum_^ 4 ( mu_k + t ^ * n_k) = 0 $ và $ mu_k + t ^ * n_k ge 0 $ và có một số $ k trong <1,2,3 > $ sao cho $ mu_k + t ^ * n_k = 0 $. Bây giờ hãy để $ P '= $ và $ P '' = $ .


Cách lấy danh sách các đỉnh của mỗi cạnh của hình 3D thân tàu lồi

Từ câu hỏi "Làm thế nào để có được danh sách các đỉnh trong một khối lồi", tôi có thể nhận được danh sách các đỉnh của mỗi tam giác tạo thành mỗi mặt của khối lồi từ một tập hợp điểm và cũng đóng các tam giác bằng cách thêm đỉnh đầu tiên của mỗi danh sách các đỉnh vào cuối danh sách đó.

Tôi đang sử dụng các danh sách này để vẽ các số liệu trong $ LaTeX $ bằng Tikz. Vấn đề với việc có các hình tam giác là Tikz coi mỗi hình tam giác là một mặt khác hoặc một mặt khác của vỏ lồi và do đó nó tô màu chúng khác nhau ngay cả khi các hình tam giác nằm trong cùng một mặt phẳng hoặc một mặt. Ví dụ: các hình tam giác đóng của các điểm trong câu hỏi được tham chiếu ở trên là

và kết quả là khó hiểu.

Tuy nhiên, nếu tôi cung cấp danh sách khép kín các đỉnh có trong mỗi mặt, không bao gồm các đường kết nối trên cùng một mặt,

thì đầu ra rõ ràng hơn.

(Các mặt là hình tam giác phải được đóng lại hai lần vì danh sách các đỉnh phải có cùng độ dài)

Làm thế nào tôi có thể chỉ nhận được danh sách các đỉnh của mỗi cạnh mà không có các cạnh trên cùng một mặt của thân lồi?


GvSIG Desktop & # 8211 Hệ thống Thông tin Địa lý Nguồn Mở

gvSIG Desktop là một GIS mạnh mẽ, thân thiện với người dùng, có khả năng tương tác được hàng nghìn người dùng trên toàn thế giới sử dụng.

Nó dễ dàng làm việc ở nhiều định dạng với gvSIG Desktop, các tệp vector và raster, cơ sở dữ liệu và các dịch vụ từ xa. Phần mềm cung cấp nhiều công cụ khác nhau để phân tích và quản lý thông tin địa lý của bạn.

gvSIG Desktop được thiết kế để trở thành một giải pháp dễ dàng mở rộng, cho phép người dùng cải thiện ứng dụng phần mềm và phát triển các giải pháp phù hợp.

  • Truy cập vào các định dạng vectơ: SHP, DXF, GML, DWG, DGN, KML.
  • Truy cập các định dạng raster: BMP, GIF, TIFF, JPEG, JP2, PNG, VRT, DAT của ENVI, ERDAS (LAN, GIS, IMG), PCI Geomatics (PIX, AUX), ADF của ESRI, ILWIS (MPR, MPL) , MAP của PC Raster, ASC, PGM, PPM, RST của IDRISI, RMF, NOS, KAP, HDR, RAW.
  • Truy cập các dịch vụ từ xa: OGC (WMS, WFS, WCS, WFS-T, WPS), ArcIMS, Ecwp.
  • Truy cập cơ sở dữ liệu và bảng: PostGIS, ArcSDE, JDBC, CSV.
  • Hiển thị: phóng to, lia máy, khung hình, định vị.
  • Truy vấn: thông tin, đo diện tích và khoảng cách, siêu liên kết.
  • Lựa chọn: theo điểm, theo hình chữ nhật, theo đa giác, theo lớp, theo đường đa giác, theo vòng tròn, theo vùng đệm, tìm kiếm chữ và số, đảo ngược lựa chọn, xóa lựa chọn.
  • Tìm kiếm: theo thuộc tính, theo tọa độ.
  • Xử lý địa lý: đệm, giao nhau, clip, giải thể, liên hợp, lồi lõm, khác biệt, hợp nhất, nối không gian, dịch chuyển XY, chiếu lại, xử lý địa lý Sextante.
  • Chỉnh sửa đồ họa: thêm các lớp sự kiện, chụp nhanh, lưới, độ phẳng, ngăn xếp lệnh, hoàn tác / làm lại, sao chép, di chuyển, đối xứng, xoay, chia tỷ lệ, chỉnh sửa đỉnh, đa giác bên trong, ma trận, phát nổ, tách, nối, đa giác tự động hoàn thành, chèn điểm, đa điểm, đường thẳng, cung tròn, đa giác, đa giác, hình chữ nhật, hình vuông, hình tròn, hình elip.
  • Chỉnh sửa chữ và số: quản lý các trường, chỉnh sửa sổ đăng ký, máy tính trường.
  • Dịch vụ danh mục và công báo
  • Biểu diễn vectơ: ký hiệu duy nhất, đại lượng (mật độ điểm, khoảng, ký hiệu chia độ, ký hiệu tỷ lệ), danh mục (biểu thức, giá trị duy nhất), nhiều thuộc tính, lưu / tải chú giải, hàm tạo ký hiệu, mức ký hiệu, thư viện ký hiệu.
  • Biểu diễn Raster: độ sáng, độ tương phản, nâng cao, độ trong suốt theo pixel, độ trong suốt, bảng màu, độ dốc.
  • Ghi nhãn: Ghi nhãn tĩnh, ghi nhãn nâng cao, ghi nhãn cá nhân.
  • Các bảng: thống kê, bộ lọc, thứ tự tăng / giảm dần, liên kết, nối, di chuyển lựa chọn, xuất, nhập các trường, mã hóa, chuẩn hóa.
  • Hàm tạo bố cục: bố cục trang, các yếu tố bản đồ (chế độ xem, chú giải, hướng bắc, tỷ lệ, khung, hình ảnh, văn bản, đồ họa), lưới, mẫu.
  • In ấn: sang PDF, sang Postscript, xuất sang một số định dạng hình ảnh.
  • Phân tích mạng: cấu trúc liên kết mạng, trình quản lý điểm dừng, đường dẫn tối thiểu, kết nối, cây bao trùm tối thiểu, nguồn gốc & # 8211 ma trận đích, nhà cung cấp cơ sở khẩn cấp / gần nhất, khu vực dịch vụ.
  • Raster và viễn thám: thống kê, bộ lọc, biểu đồ, phạm vi tỷ lệ, nâng cao, lưu vào tệp raster, vectơ hóa, định nghĩa khu vực quan tâm (ROI), thành phần chung, hội nghị địa lý, định vị địa lý, phân loại có giám sát, đại số băng tần, cấu hình ảnh, cây quyết định, các thành phần chính, nắp tua, hợp nhất hình ảnh, sơ đồ phân tán, tranh ghép.
  • Xuất bản: MapServer & # 8217s WCS, WMS và WFS, Geoserver & # 8217s WFS.
  • 3D và hoạt ảnh: Chế độ xem 3D, chiếu XYZ cũng như hình cầu (hành tinh), lớp 3D, ký hiệu 3D, chỉnh sửa 3D, tạo khung 3D, hoạt hình 2D và 3D, xem âm thanh nổi (chia theo chiều ngang).
  • Cấu trúc liên kết: xây dựng cấu trúc liên kết, chỉnh sửa cấu trúc liên kết, tổng quát hóa, hướng dòng đảo ngược, đa giác từ / đến dòng, dòng từ / đến điểm, tam giác Delaunay, đa giác Thiessen, xây dựng, làm sạch, sửa lỗi cấu trúc liên kết (ở chế độ Batch).
  • Khác: Điều phối viên quản lý Hệ thống tham chiếu, nhập / xuất sang WMC, quản lý kịch bản, dịch thuật.

Trang mạng: www.gvsig.com
Ủng hộ: Tài liệu
Nhà phát triển: Hiệp hội gvSIG
Giấy phép: Giấy phép Công cộng GNU (phiên bản 3 trở lên)

gvSIG Desktop được viết bằng Java. Học Java với đề xuất của chúng tôi sách miễn phíhướng dẫn miễn phí.

Đọc bộ sưu tập đầy đủ của chúng tôi về phần mềm nguồn mở và miễn phí được đề xuất. Bộ sưu tập bao gồm tất cả các loại phần mềm.


Chứng chỉ tốt nghiệp về Khoa học dữ liệu không gian địa lý

Chúng tôi cung cấp chứng chỉ sau đại học cho những sinh viên đã có bằng cử nhân và muốn theo đuổi các môn học bổ sung về Khoa học dữ liệu không gian địa lý. Các khóa học của chúng tôi giới thiệu cho sinh viên nhiều công cụ khoa học dữ liệu khác nhau, tập trung vào dữ liệu dựa trên vị trí. Chứng chỉ bổ sung cho Thạc sĩ Khoa học Chuyên nghiệp của chúng tôi về Khoa học Dữ liệu Không gian Địa lý và đóng vai trò như một cổng vào chương trình. Nó cũng kết hợp tốt với các chương trình sau đại học khác trong Trường Cao đẳng Nghệ thuật Tự do và trong suốt Đại học Temple.


Hull lồi nhỏ nhất ($ n $ -Simplex) trong tổng số $ n + 2 $ điểm trong $ mathbb^ n $

"Cho $ n $, hãy tìm giá trị nhỏ nhất của $ k $ với thuộc tính sau: Bất kỳ điểm $ k $ (phân biệt) nào trong $ mathbb^ n $ có thể được phân chia thành hai tập con rời rạc để giao điểm của các phần lồi của hai phân vùng không bị trống. "

Bao lồi của một tập hợp là tập lồi "nhỏ nhất" chứa tập hợp đó. Tập lồi $ C $ là một tập hợp $ forall x, y in C $, $ lambda x + (1- lambda) y in C $ for leq lambda leq 1 $.

Ví dụ: trong $ mathbb$, giả sử chúng ta có ba điểm $ a, b, c $ với $ a & lt b & lt c $. Sau đó, đặt $ a $ và $ c $ trong một phân vùng và $ b $ trong phân vùng còn lại. Rõ ràng, phần lồi của $ $ là đoạn thẳng thực sự vượt qua $ b $.

Trong $ mathbb^ 2 $, tôi nghĩ $ k = 4 $. Chúng tôi có bốn trường hợp:

Trường hợp 1: Cả bốn điểm $ a, b, c, d $ thẳng hàng. Sau đó, các phân vùng có thể là $ $ và $ $ và phần lồi của chúng rõ ràng có giao điểm không trống.

Trường hợp 2: Ba điểm thẳng hàng, giả sử $ a, b, c, $ với $ b $ trong khoảng từ $ a $ đến $ c $. Điểm $ d $ ở nơi khác. Sau đó, hãy để các phân vùng lại là $ $ và $ $.

Trường hợp 3: Bốn điểm tạo thành các đỉnh của một tứ giác lồi. Sau đó, gọi các vỏ lồi là "đường chéo".

Trường hợp 4: Bốn điểm tạo thành đỉnh của một tứ giác lõm. Sau đó, ba trong số các điểm tạo thành các đỉnh của một tam giác và điểm thứ tư sẽ nằm bên trong đó. Vỏ lồi của $ $ chính xác là tam giác đó.

Tôi phỏng đoán rằng $ k = n + 2 $. Tôi nghĩ rằng phần lồi của $ n + 1 $ point trong $ mathbb^ n $ là $ n $ -simplex (Tôi không biết đó có phải là ký hiệu đúng hay không). Chúng ta luôn có thể tạo một đơn giản với $ n + 1 $ điểm và sau đó có điểm cuối cùng là di động xung quanh. Nếu điểm đó nằm trong simplex (vỏ lồi phỏng đoán), thì chúng ta đã hoàn tất. Nếu nó ở bên ngoài nó, chúng ta có thể phân chia không gian dựa trên "các mặt" của simplex của chúng ta.

Ví dụ: trong $ mathbb^ 3 $, chúng ta có năm điểm. Chúng ta có thể xây dựng một tứ diện với bốn trong số các điểm. Hình tứ diện sẽ có bốn mặt có thể được mở rộng thành bốn mặt phẳng, chia $ mathbb^ 3 $. Mỗi mặt phẳng cắt không gian thành hai. Vì vậy, nếu điểm thứ năm của chúng ta ở một bên của mặt, thì có một đỉnh liên quan của tứ diện ở phía bên kia. Chúng ta có thể để đỉnh đó và điểm thứ năm này nằm trong một phân vùng và ba điểm còn lại nằm trong một phân vùng khác. Như vậy, chúng ta có một đoạn thẳng đi qua một tam giác. Nếu có vấn đề với điểm nằm trong mặt phẳng của một trong các mặt, tôi nghĩ chúng ta vẫn có thể giải quyết trường hợp đó đơn giản bằng cách tạo thành một tam giác và đoạn thẳng.

Nhưng ngoài $ mathbb^ n $, đối với tôi không rõ ràng là làm thế nào để chứng minh hoặc bác bỏ phỏng đoán. Tôi nghĩ rằng giải pháp không nên yêu cầu bất cứ điều gì mà là những phương pháp sơ đẳng (không nhất thiết phải dễ dàng hay đơn giản, chỉ là những kỹ thuật mà một học sinh đại học hoặc thậm chí trung học có thể nhận ra). Tôi thực sự không biết bất kỳ hình học đại số nào nhưng tôi biết rằng hình học đơn giản và liên kết có liên quan đến vấn đề do đó các thẻ.


Dữ liệu Vectơ trên Địa hình # 2172

Dữ liệu vectơ: đa giác, đa đường và biển quảng cáo / nhãn.

Bây giờ chỉ là một trình giữ chỗ để thu thập tài liệu đọc. Nhiều hơn nữa sẽ đến.

Văn bản đã được cập nhật thành công, nhưng các lỗi này đã gặp phải:

Chúng tôi không thể chuyển đổi nhiệm vụ thành sự cố vào lúc này. Vui lòng thử lại.

Sự cố đã được tạo thành công nhưng chúng tôi không thể cập nhật nhận xét vào lúc này.

Vmora đã nhận xét ngày 10 tháng 2 năm 2015

Pjcozzi đã nhận xét ngày 16 tháng 2 năm 2015

@bagnell Bạn có thể đánh giá đề can thể tích như một cách tiếp cận cho đa giác / đa đường trên địa hình không? Hãy nghĩ về hiệu suất và độ chính xác.

Tôi không biết làm thế nào để làm cho đa giác nhanh chóng, nó cần phân rã lồi (không nhất thiết phải chi tiết như tam giác) hoặc kiểm tra điểm trong đa giác trên mỗi pixel (nếu được thực hiện với kết cấu 2D của polygon sẽ có tất cả những hạn chế của việc chỉ xếp chồng lên một kết cấu như một lớp hình ảnh).

Pjcozzi đã nhận xét ngày 17 tháng 2 năm 2015 & # 8226

@bagnell đây là một số lưu ý cho cách tiếp cận khối lượng bóng tối:

  • Hãy nhớ không sử dụng hình cầu giới hạn cho chính đa giác vì đa giác thực là nơi thể tích giao với địa hình. Điều thận trọng nhất cần làm là sử dụng hình cầu giới hạn của khối lượng, nhưng tôi nghĩ chúng ta có thể làm tốt hơn.
  • Để tiết kiệm tỷ lệ lấp đầy, thay vì sử dụng độ cao tối đa để đẩy lên, chúng ta nên thêm một hàm vào trình cung cấp địa hình để trả về độ cao tối đa (và có thể là tối thiểu) của phạm vi dựa trên địa hình đã tải (có thể với lệnh gọi lại để tinh chỉnh?) . Để bắt đầu, điều này có thể dựa trên hình cầu giới hạn của mỗi (hoặc chiều cao tối đa khi nó thấp hơn), nhưng chúng tôi có thể làm cho điều này tốt hơn nhiều với phần mở rộng lưới lượng tử giữ tối thiểu / tối đa cho mỗi nút. Đây cũng có thể là một dịch vụ web.

Pjcozzi đã nhận xét ngày 17 tháng 2 năm 2015

Ghi chú từ cuộc thảo luận của chúng tôi về biển quảng cáo / nhãn:

  • Gốc kiểm tra độ sâu trong bộ đổ bóng đỉnh bằng cách sử dụng bộ đệm độ sâu địa hình. Điều này sẽ yêu cầu VTF, được hỗ trợ 97% (MAX_VERTEX_TEXTURE_IMAGE_UNITS).
  • Chiều cao truy vấn từ nhà cung cấp địa hình. Có cuộc gọi lại khi nó tinh chỉnh. Lớp thực thể sẽ cập nhật chiều cao biển quảng cáo.
  • Về lâu dài, chúng tôi có thể cần khả năng chỉ hiển thị số lượng nhãn x gần nhất / quan trọng nhất và không kiểm tra độ sâu chúng. Điều này cho phép chúng tôi xem nhãn thông qua địa hình, tòa nhà, v.v.

Pjcozzi đã nhận xét ngày 17 tháng 2 năm 2015

Ngoài ra, tôi mong đợi các phương pháp tiếp cận không gian màn hình (khối lượng bóng tối, decal, v.v.) sẽ tốt hơn nhiều cho việc chỉnh sửa thời gian chạy so với các phương pháp lấy mẫu phụ và kết cấu (lấy mẫu phụ có thể được, nhưng tôi mong đợi việc chỉnh sửa lại kết cấu, đặc biệt là nếu chúng tôi đã tạo ra một quadtree thưa thớt từ nó, sẽ rất chậm).

Pjcozzi đã nhận xét ngày 17 tháng 2 năm 2015

Chiều cao truy vấn từ nhà cung cấp địa hình.

Tôi không chắc việc triển khai trông như thế nào bây giờ, nhưng chúng ta có thể làm tốt hơn nhiều so với việc nhìn từng hình tam giác một cách thô bạo. Chúng tôi có thể giả định rằng hình tam giác được sử dụng lần cuối sẽ được sử dụng tiếp theo và cũng sử dụng thông tin kề (tính toán trước một lần trên máy khách mà tôi đoán, hoặc dưới dạng phần mở rộng lưới lượng tử hóa) hoặc sắp xếp bốn cây bên trong ô để tìm tam giác vuông .

Có cuộc gọi lại khi nó tinh chỉnh. Lớp thực thể sẽ cập nhật chiều cao biển quảng cáo.

Điều này có thể được thực hiện trên nhân viên web, ví dụ: mỗi khi chúng tôi nhận được một ô mới, nhân viên web sẽ xem xét tất cả các vị trí đã đăng ký để xếp hàng các lệnh gọi lại (hoặc sự kiện). Đây có thể là cùng một nhân viên xử lý ô để trực quan hóa hoặc một nhân viên riêng biệt để giảm độ trễ cho hình ảnh hóa địa hình với chi phí trì hoãn cập nhật dữ liệu vectơ.

Pjcozzi đã nhận xét ngày 17 tháng 2 năm 2015

@bagnell có lẽ chúng tôi làm polylines cuối cùng. Chúng tôi có thể đánh giá khối lượng bóng cho chúng bằng cách sử dụng hình học hành lang và lấy mẫu phụ bằng cách sử dụng cơ sở hạ tầng mà chúng tôi sẽ xây dựng cho biển quảng cáo / nhãn. Chương 3 của Kỹ thuật trực quan hóa định hướng khả năng sử dụng cho Hiển thị bản đồ điều hướng 3D là một so sánh tốt, nhưng lấy mẫu phụ của chúng thực hiện chính xác các giao điểm đường thẳng / tam giác - và vẫn không có được chất lượng hình ảnh phù hợp cho địa hình có độ phân giải cao.

Kring đã nhận xét ngày 18 tháng 2 năm 2015

Để bắt đầu, điều này có thể dựa trên hình cầu giới hạn của mỗi (hoặc chiều cao tối đa khi nó thấp hơn), nhưng chúng tôi có thể làm cho điều này tốt hơn nhiều với phần mở rộng lưới lượng tử giữ tối thiểu / tối đa cho mỗi nút.

Không chắc bạn muốn nói gì ở đây. Các ô lưới được lượng tử hóa đã biết chiều cao tối thiểu và tối đa của bất kỳ điểm nào trong ô. Đó là những gì bạn đang đề cập đến, hay bạn cần một cái gì đó khác? Trên thực tế, các ô bản đồ chiều cao cũng vậy, nó chỉ được tính toán tại thời điểm tải.

Pjcozzi đã nhận xét ngày 18 tháng 2 năm 2015

Không. Điều đó sẽ làm được. Tôi rõ ràng đã không nhìn vào định dạng.

Pjcozzi đã nhận xét ngày 21 tháng 2 năm 2015

@bagnell Tôi có nhiều ý tưởng hơn về điểm trong khối lượng.

  • Nếu chưa có: hình cầu giới hạn - & gt đùn vỏ lồi - & gt kiểm tra chính xác
  • Nếu đã có: hình cầu nội tiếp - & gt vỏ lồi nội tiếp - & gt kiểm tra chính xác (thực sự có thể kiểm tra hình cầu giới hạn và vỏ lồi đùn trước khi kiểm tra chính xác)
  • Sau đó: xem xét BVH để tránh O (n) trên tất cả các đa giác.
  • Có lẽ cần phải thử nghiệm để xem liệu vỏ lồi có đáng giá hay không, ví dụ, nếu đa giác đã lồi hoặc có thể bị phá vỡ thành một vài vùng lồi.
  • Tôi nghĩ chúng ta nên bắt đầu bằng cách mã hóa điểm chung (hoặc gần mặt phẳng?) Trong khối lượng đùn, nhưng tôi nghi ngờ rằng chúng ta cũng sẽ muốn có một phiên bản được tối ưu hóa cho trường hợp duy nhất của mình:
    • Chúng tôi không cần phải kiểm tra nắp đáy theo địa hình
    • Nói chung, chúng ta sẽ cần kiểm tra nắp trên, việc kiểm tra từng hình tam giác sẽ rất chậm, nhưng tôi nghĩ chúng ta có thể thoát khỏi chỉ cần kiểm tra chiều cao của máy ảnh. Tuy nhiên, tôi cho rằng sẽ có vấn đề xảy ra vì điều đó giả định rằng nắp trên có hình chóp vô hạn, vì vậy chúng ta có thể cần phải kiểm tra chiều cao vừa phải và sau đó kiểm tra các hình tam giác (trừ khi máy ảnh ở trên chiều cao tối đa).

    Pjcozzi đã nhận xét ngày 25 tháng 4 năm 2015

    Bagnell đã nhận xét ngày 21 tháng 8 năm 2015

    • Thêm chiều cao động tối thiểu. (Cần thay đổi đối với các hình được hỗ trợ)
    • Địa hình truy vấn để có chiều cao tối đa chặt chẽ hơn.
    • Thêm tùy chọn vào hình học để tạo các khối lượng giới hạn khác nhau.
    • Hàng loạt theo màu?
    • OBB chặt chẽ hơn? Có thể tính toán từ hình tam giác

    Likangning93 đã nhận xét ngày 25 tháng 10 năm 2017

    Kỹ thuật trực quan hóa định hướng khả năng sử dụng để hiển thị bản đồ điều hướng 3D. 2014.

    Điều đó giống như một Hướng dẫn của Hitchiker hoặc một cái gì đó waoww

    Pjcozzi đã bình luận 7 thg 2, 2018

    Tôi chỉ đọc phần tóm tắt, nhưng điều này có thể thú vị:

    Hình ảnh hóa bản đồ vector hoãn lại

    Kết xuất tương tác các bản đồ vectơ tỷ lệ lớn là một thách thức chính đối với hệ thống phần mềm trực quan hóa địa lý chất lượng cao. Trong bài báo này, chúng tôi trình bày một cách tiếp cận mới để trực quan hóa bản đồ vectơ tỷ lệ lớn trên các địa hình trường độ cao chi tiết. Phương pháp của chúng tôi sử dụng phương pháp tô bóng đường trì hoãn để hiển thị bản đồ vectơ tỷ lệ lớn trực tiếp trong giai đoạn tô bóng không gian màn hình qua hình ảnh hóa địa hình. Thực tế là không có kết xuất đa giác hình học truyền thống liên quan cho phép thuật toán của chúng tôi hoạt động tốt hơn các thuật toán kết xuất bản đồ vectơ thông thường cho các hệ thống thông tin địa lý. Phương pháp kết xuất dòng hoãn lại theo cụm linh hoạt của chúng tôi cho phép người dùng tùy chỉnh tương tác và áp dụng các phương pháp tạo kiểu vector nâng cao, cũng như tích hợp vào hệ thống mức chi tiết của bản đồ vector.

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

    @ likangning93 hãy đọc và cho chúng tôi biết suy nghĩ của bạn.

    Thoenu đã nhận xét vào ngày 15 tháng 3 năm 2018 & # 8226

    Kính gửi Patrick và những người khác, bạn có thể muốn xem xét bài báo trên tạp chí với liên kết ở trên, có chứa một số phân tích hiệu suất hơn:

    Hpinkos đã nhận xét vào ngày 15 tháng 3 năm 2018

    Likangning93 đã nhận xét ngày 30 tháng 4 năm 2018 & # 8226

    Cách tiếp cận này thật tuyệt vời và đáng sợ. Điểm mấu chốt là thay vì hiển thị "đường" dưới dạng hình học, họ thực hiện quy trình đăng toàn màn hình để kiểm tra từng đoạn địa hình trong chế độ xem hiện tại để xem độ gần của nó với một đoạn đường, với tất cả các đoạn đường được lưu trữ trong kết cấu sử dụng lưới BVH thống nhất.

    Sang một bên những lo ngại chưa được xác nhận về vấn đề độ chính xác, cuối cùng đã đến lúc tôi viết một bản truyền tải GPU BVH chưa? Cuối cùng có phải là thời gian của tôi không ?!

    [EDIT] được một danh sách thực tế các mối quan tâm:

    • các vấn đề về độ chính xác đã nói ở trên: bài báo này dự báo các mảnh địa hình thành "tọa độ thế giới" và sau đó thực hiện kiểm tra 2D để xem chúng có "gần" với các đường không. Tôi nghi ngờ rằng chúng ta không thể có đủ độ chính xác vì không gian "tọa độ thế giới" của chúng ta lớn như thế nào
    • Ngoài ra, 2D đó cũng kiểm tra mọi thứ - điều này không hoạt động tốt trên quả địa cầu, bạn có thể phải xác định một loạt các hệ tọa độ địa phương. Hoặc có thể sửa lại mọi thứ thành tọa độ cầu? Nhưng điều đó đi kèm với một loạt các vấn đề về độ chính xác / độ chính xác của riêng nó.
    • thêm / bớt dòng đắt như thế nào? Đó có vẻ như là rất nhiều cơ cấu dữ liệu cần cập nhật.
    • làm thế nào điều này sẽ tích hợp với các Thực thể / Nguyên thủy? Kỹ thuật này cố gắng đóng gói tất cả các đường đa tuyến thành một tập hợp các đường chuyền không đổi duy nhất.
    • làm thế nào để xử lý khi số dòng trong một cụm lấn át sự phân bổ pixel của cụm? Thêm một bộ sưu tập polyline khác?

    Mặc dù vậy, tôi đang yêu cái ý tưởng này, điều đó thật nguy hiểm. Tôi tự hỏi chúng ta có thể chuyển được bao nhiêu phép toán vào không gian mắt. và cập nhật từng phần kết cấu thì không cái đó chậm. và có thể lưu trữ các polyline trong kết cấu float với độ chính xác gấp đôi.

    Likangning93 đã nhận xét ngày 30 tháng 4 năm 2018 & # 8226

    Phương pháp tiếp cận không gian màn hình để hiển thị nhiều đường trên địa hình

    Một điều đáng chú ý mà tôi có với kỹ thuật này là yêu cầu hiển thị cả một bức tường và một khối lượng bóng, điều này có vẻ đắt hơn đối với chúng tôi vì WebGL. Tuy nhiên, kết hợp điều này với các ý tưởng tận dụng bảng lô để xử lý phân mảnh trong # 6393, tôi tự hỏi liệu chúng ta có thể:

    • hiển thị một khối lượng mỏng cho mỗi đoạn đường, mang theo ánh xạ lô ID đến các vị trí bắt đầu / kết thúc và một vectơ hoặc thứ gì đó được lấy với đầu / cuối mô tả một hệ tọa độ cục bộ với mặt phẳng XY tiếp tuyến với ellipsoid
    • đối với mỗi mảnh, hãy tra cứu độ sâu quả địa cầu và tính toán vị trí không gian mắt. Gộp vị trí đó và các vị trí bắt đầu / kết thúc vào mặt phẳng XY của hệ tọa độ cục bộ được chuyển đổi thành không gian mắt và kiểm tra tính chất màu với điểm bắt đầu / kết thúc, tương tự như vậy đã bị bóp méo.

    Tôi nghĩ rằng chúng ta sẽ phải tắt Z sớm, chẳng hạn như nếu máy ảnh đang nhìn xuống các tập rất kỹ để "đỉnh" của một tập nằm trên các tập liền kề. Nhưng có lẽ đó không phải là một cái giá quá lớn phải trả để cắt giảm điều này xuống còn một lượt.

    Chúng ta cũng có thể điều chỉnh "độ dày" của vùng bóng tối bằng cách sử dụng thuộc tính đỉnh bình thường được thêm vào các vị trí dựa trên khoảng cách máy ảnh.

    Một số mặt sau của toán học phong bì cho tiêu thụ bảng hàng loạt:

    • 5000 polyline với 10 điểm, mỗi polylines tạo ra 5000 * 9 = 45,000 phân đoạn và các mục nhập bảng hàng loạt
    • giả sử mỗi phân đoạn có 1 vị trí vec3 độ chính xác cao cho vị trí bắt đầu, 1 vec3 bù đắp để đến vị trí kết thúc và 1 vec3 bình thường. Đó là 12 phao, vì vậy giả sử chúng tôi chia tất cả dữ liệu thành 3 kết cấu
    • đó là một cái gì đó giống như 3 kết cấu nổi 256 x 256 RBGA, có vẻ không quá khủng khiếp

    Likangning93 đã bình luận 30 thg 4, 2018

    Cách tiếp cận theo cột cũng cung cấp cho chúng tôi dữ liệu có thể quan trọng để thực hiện nội dung phong cách.

    Likangning93 đã nhận xét ngày 30 tháng 4 năm 2018 & # 8226

    Câu hỏi: mức độ hỗ trợ vật chất mà chúng tôi muốn ở đây là gì? Có một sự phát triển tuyệt vời lâu đài cát Polyline Color và tôi. không chắc chắn làm thế nào để làm điều đó khi chúng tôi đang làm việc trong không gian phân mảnh.

    Một cái gì đó có hai màu cho mỗi đoạn và có thể là lerp.

    Pjcozzi đã bình luận 30 thg 4, 2018

    Đối với phong cách, hãy bắt đầu với màu sắc và độ rộng đường kẻ. Sau đó, gạch ngang. Sau đó, kết cấu.

    Likangning93 đã nhận xét ngày 1 tháng 5 năm 2018 & # 8226

    Vì vậy, thủ thuật "khối lượng bóng vượt qua một lần cho các đường" ở trên có thể có các vấn đề tương tự như thuật toán khối lượng bóng thông thường cho các đường đa tuyến trên địa hình, cụ thể là, khó giữ độ rộng không gian màn hình không đổi:

    • khi được vẽ vuông góc với độ dốc của độ dốc lớn và được nhìn trên tường
    • khi nhìn ở góc đối diện với đường chân trời trên mặt đất bằng phẳng

    Nhưng vì nó là một lần vượt qua và không yêu cầu bất kỳ trạng thái kết xuất đặc biệt nào nên nó vẫn có thể chia sẻ lệnh gọi với thuật toán tường của @ pjcozzi, điều mà một khối lượng bóng tối thông thường không thể làm được. Vì vậy, đó vẫn là một loại hứa hẹn.

    [EDIT] hãy nghĩ về nó, "Hình ảnh hóa bản đồ vectơ bị trì hoãn" có thể cũng gặp phải các vấn đề về vết bẩn và cạnh vì nó dựa vào một thứ gì đó giống như kỹ thuật cột 2D để kiểm tra xem một đoạn có phải là một phần của đoạn thẳng hay không.

    Likangning93 đã nhận xét ngày 11 tháng 5 năm 2018

    thủ thuật "khối lượng bóng vượt qua một lần cho các đường"

    Tôi nghĩ rằng kỹ thuật này có đủ hứa hẹn rằng chúng ta có thể bắt đầu lắp ráp một kế hoạch trò chơi. Đây là một vài bức ảnh chụp nguyên mẫu của tôi ở các khoảng cách xem khác nhau, chúng tôi sẽ có thể mô phỏng "chiều rộng không gian màn hình không đổi" một cách hợp lý:

    | |

    :-------------------------:|:-------------------------:|:-----------:
    gần | xa | dù bạn ở đâu

    Tôi nghĩ rằng thông qua API Nguyên thủy, nó sẽ trông giống như một loại Hình học tùy chỉnh (được sử dụng thông qua một phương pháp xây dựng các mảng của GeometryInstances) và một loại Nguyên thủy tùy chỉnh thực sự sẽ chỉ là một trình bao bọc nhẹ xung quanh Nguyên thủy nhưng có thể phải rối một chút với GroundPrimitive để biết thông tin địa hình.

    Tuy nhiên, điều này nên tích hợp vào API thực thể như thế nào? Chỉ một cái gì đó giống như cờ onTerrain mà bạn có thể thêm vào các thực thể polyline? Tôi chắc chắn một cách hợp lý rằng điều này sẽ cần món mì Ý của riêng nó gồm những người cập nhật và những người làm công việc bắt sóng dưới mui xe do Nguyên thủy tùy chỉnh.

    Cũng có thể là khôn ngoan nhất nếu bắt đầu với sự hỗ trợ vật chất chỉ giới hạn ở những màu sắc đơn giản, nhưng tôi sẽ cố gắng có ý tưởng cụ thể hơn về mức độ khó khăn của việc hỗ trợ vật chất đầy đủ sẽ sớm như thế nào.


    Hệ thống thông tin địa lý: Hệ thống thông tin địa lý: Tất cả về chúng là gì

    Hệ thống thông tin địa lý (GIS) phục vụ mục đích duy trì, phân tích và trực quan hóa dữ liệu không gian đại diện cho các đối tượng địa lý, chẳng hạn như núi, hồ, nhà cửa, đường xá, đường hầm. Đối với dữ liệu không gian, các thuộc tính hình học (không gian) đóng một vai trò quan trọng, đại diện cho ví dụ: điểm, đường thẳng và vùng trong mặt phẳng hoặc khối lượng trong không gian 3 chiều. Chúng mô hình hóa các đặc điểm địa lý của thế giới thực, chẳng hạn như các điểm đo đạc, đường ranh giới giữa các mảnh đất liền kề (trong cơ sở dữ liệu địa chính), hồ hoặc khu vực công viên giải trí (trong hệ thống thông tin du lịch). Trong không gian ba chiều, dữ liệu không gian mô tả các đường hầm, hệ thống ống ngầm trong các thành phố, dãy núi hoặc mỏ đá. 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. MỘT 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. MỘT 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. MỘT range query (hoặc window query) for a query range asks for all objects in the collection that intersect the given orthogonal window. MỘT 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. MỘT point- tô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- NSefinement 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 layer. 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. Ở trong 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 của 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 righNS 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).

    Cmộtrtographic 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

    Geographic Information Systems 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 thời gian component brings a new dimension to spatial data (even in the mathematical sense of the word, if you wish). How did the forest mộtNSemộts 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