(Khi nào) tôi nên sử dụng cơ sở dữ liệu hỗ trợ GIS?


22

Tôi là một lập trình viên lâu năm, mới làm quen với GIS. Tôi đang cố gắng để cảm nhận về các khía cạnh cơ sở dữ liệu của GIS và tôi hiểu rằng có một số cơ sở dữ liệu chuyên dùng cho việc sử dụng GIS. Về cơ bản, tôi đang cố gắng hiểu liệu nên sử dụng một cơ sở dữ liệu như vậy hay để gắn bó với MySql cực kỳ phổ biến, được thiết lập tốt, được hỗ trợ rộng rãi (và miễn phí).

Các loại ứng dụng tôi chịu trách nhiệm về mã sẽ như sau:

  • quản lý đội tàu (phương tiện đường bộ hoặc đường biển)
  • theo dõi nhân viên
  • kiểm soát hàng tồn kho (ở mức độ chi tiết của vị trí vật lý chính xác đến bằng một mét hoặc hơn)
  • errm, đó là về nó, thực sự

Tôi thường mong đợi được theo dõi không quá 1 vài trăm (tối đa, có thể vài nghìn) mặt hàng. Đôi khi các mục sẽ được đặt trong cùng một tòa nhà (lớn), hàng loạt tòa nhà, thành phố, quốc gia hoặc toàn thế giới, tùy thuộc vào ứng dụng.

Thỉnh thoảng tôi sẽ đại diện trực quan cho họ trên sơ đồ tầng tùy chỉnh của tòa nhà hoặc, nhiều khả năng, trong Google Earth hoặc tương tự (nhiều hơn trong câu hỏi khác).

Dường như với tôi rằng tôi cũng thích MySql và thêm các cột cho lat / long hoặc dữ liệu vị trí khác, nhưng đó có thể là do tôi biết MySql.

Có bất kỳ lý do tại sao tôi nên xem xét một cơ sở dữ liệu chuyên ngành hơn?

Câu trả lời:


13

Lợi thế thực sự đối với cơ sở dữ liệu không gian (PostGIS, phần mở rộng không gian cho MySQL hoặc bất cứ thứ gì khác) là bạn có thể thực hiện các thao tác không gian trên dữ liệu không gian. Nếu bạn chỉ lưu trữ tọa độ điểm, thì bạn không thực sự thu được nhiều từ không gian (chỉ sử dụng hai cột số). Nếu bạn lưu trữ kết hợp tọa độ điểm (nơi có khách hàng) và tọa độ đường (nơi xe tải giao hàng đi) và đa giác (khu vực bán hàng), sau đó thực hiện các truy vấn liên quan đến các bit thông tin khác nhau (có bao nhiêu khách hàng trong một doanh số khu vực, có bao nhiêu xe tải đã đi ít hơn 2km từ một trang web của khách hàng ngày hôm nay nhưng không thực hiện giao hàng hoặc nhận hàng), bạn có thể đạt được rất nhiều.

Như iant đã chỉ ra, PostGIS chắc chắn đáng để tìm kiếm một ứng dụng máy chủ. SpatiaLite là phần mở rộng không gian cho SQLite, có thể phù hợp hơn cho ứng dụng di động để bàn / nhúng / ngoại tuyến, đồng thời cung cấp các hàm SQL khá giống nhau [ Tiết lộ: Tôi làm việc trên SpatiaLite ], lưu ý rằng không có gì ngăn bạn sử dụng PostGIS trong một ứng dụng máy tính để bàn.


+1 và cảm ơn. Chỉ tò mò về lý do tại sao nó dựa trên Sqlite chứ không phải MySql ...
Mawg

1
Tôi nghĩ rằng nó chỉ là mục tiêu thiết kế khác nhau (được nhúng, không có cấu hình, v.v.).
BradHards

+1 đó là những gì tôi nghĩ (tôi cũng đến từ một nền tảng nhúng). Cảm ơn bạn về thông tin. Tôi hy vọng rằng tôi sẽ kết thúc với các ứng dụng dựa trên trình duyệt (hầu hết chúng ta sẽ, ngay cả khi chúng ta không muốn), vì vậy "lite" là không quá cần thiết. Thật khó hiểu, loại ứng dụng nào hiện có d / b trong hệ thống / thiết bị nhúng? (xin lỗi, vẫn đang học)
Mawg

1
nhúng là một lĩnh vực lớn, nhưng di động ngoại tuyến dường như là một lĩnh vực mới nổi.
BradHards

2
@Mawg Hầu hết các điện thoại và trình duyệt hiện đại đều sử dụng sqlite làm kho dữ liệu. Nó thực sự là một tệp c duy nhất và API cực kỳ đơn giản và nó chạy trong tiến trình. Ngược lại với MySQL đòi hỏi nhiều quá trình đang chạy và kiến ​​trúc máy khách / máy chủ. Hai trường hợp sử dụng rất khác nhau
Ragi Yaser Burhum

8

Bạn chắc chắn nên xem xét PostGIS cực kỳ phổ biến, được thiết lập tốt, được hỗ trợ rộng rãi (và miễn phí) . Nó sẽ làm mọi thứ mà MySQL có thể làm và xử lý các vị trí không gian như các đối tượng hạng nhất. Do đó, bạn có thể thực hiện các lựa chọn dựa trên các điểm trong hộp giới hạn (hoặc đa giác khác) mà không phải viết ra tất cả các so sánh, v.v.

Khi bạn bắt đầu cần đặt câu hỏi như đối tượng nào ở quốc gia (hoặc tòa nhà) nào thì PostGIS thực sự trở thành của riêng bạn và nếu bạn quyết định rằng bạn cần ánh xạ các đối tượng của mình thì tất cả các công cụ nguồn mở phổ biến sẽ nói chuyện với PostGIS cái hộp.


+1 và cảm ơn rất nhiều. Tôi đi để nhìn vào nó bây giờ. Hình thành quan điểm của các lập trình viên Tôi muốn thấy hos nói tốt với PHP nếu tôi truy cập web và nếu tôi sử dụng ứng dụng máy tính để bàn Widnwos thì tôi đang sử dụng các thành phần truy cập cơ sở dữ liệu AnyDac cho Delphi, vì vậy tôi sẽ gửi email cho bộ phận hỗ trợ AnyDac. Cảm ơn một lần nữa!
Mawg

1
Đối với Mawg: Tôi vẫn phải thấy bất kỳ cơ sở dữ liệu delphi nào của bên thứ 3 để hỗ trợ bất kỳ chức năng GIS nào trong postgis, db2, spatiallite, máy chủ sql, v.v. Có vẻ như đó là việc bạn phải tự làm.
Uffe Kousgaard

+1 @UffeKousgaard Tôi chỉ tìm thấy cái này ở mức $ 295 cho cartovcl.com
Mawg

1
Cartovcl (mà tôi đã sử dụng trong gần 10 năm) là một tệp SDK SDK phẳng có chức năng GIS tích hợp. Nó không phải là một API mỏng trên cơ sở dữ liệu từ xa được kích hoạt không gian.
Uffe Kousgaard

1
Tài liệu lịch sử :-) Nhưng TatukGIS có lẽ là một trong những SDK SDK toàn diện nhất toàn diện ngoài kia (nhưng cũng hơi đắt). Nhưng nó nằm trong cùng một liên minh với cartovcl, tức là chức năng gis được tích hợp sẵn, nó không phải là một API trên cơ sở dữ liệu từ xa.
Uffe Kousgaard

2

Để thêm vào câu trả lời và nhắc lại một số điểm, người ta sử dụng cơ sở dữ liệu kích hoạt không gian nếu bạn có các truy vấn liên quan đến quan hệ không gian của dữ liệu, một vài trong số đó là:

  1. những điểm nào trong phạm vi x km của điểm quan tâm của tôi
  2. điểm nào gần hơn
  3. điểm này cách điểm khác bao xa
  4. những điểm nào là x km trong đường vào

Nếu các truy vấn như vậy liên quan đến WHERE là một tính năng quan trọng cho một ứng dụng, thì thông thường chúng tôi khuyên bạn nên sử dụng cơ sở dữ liệu không gian.

Tất nhiên, người ta có thể sử dụng logic mã hóa / ứng dụng cho một số truy vấn này, chẳng hạn như sử dụng công thức khoảng cách cho 1, nhưng người ta không cần phải phát minh lại bánh xe.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.