Các lựa chọn thay thế cho Shapefiles dưới dạng mã nguồn mở, loại dữ liệu đa nền tảng [đã đóng]


20

Tôi đang làm việc trên phần mềm rất định hướng ESRI, nhưng phiên bản trong tương lai có thể sẽ không sử dụng phần mềm ESRI. Nó sử dụng Shapefiles và Geodatabase. Tôi đang lên kế hoạch đưa tất cả dữ liệu của mình vào Shapefiles để dự đoán các phiên bản phần mềm trong tương lai có thể sẽ có trên Android và các thiết bị di động khác. Dường như Shapefiles là kiểu dữ liệu phổ biến nhất cho các tính năng trong thế giới GIS nguồn mở, nhưng những cái khác là gì và chúng mang lại lợi ích gì? Tôi quen thuộc với GeoJSON và KML, nhưng tôi chắc chắn có những người khác.

Tôi muốn biết tất cả các tùy chọn, nhưng tôi đặc biệt quan tâm đến các loại dữ liệu phù hợp nhất để lưu trữ trên thiết bị di động (dữ liệu phải có thể truy cập mà không cần kết nối internet).



1
Câu hỏi đó từ năm 2011 đã được hỏi trước khi GeoPackage tồn tại và câu trả lời tự nhiên không bao gồm sự thay thế đó.
dùng49584

2
Esri File Geodatabase có độ dài trường char tối đa sẽ cạnh tranh với nội dung văn bản của hầu hết các thư viện nhỏ, Esri Personal Geodatabase cũng hỗ trợ các trường văn bản rất dài. Cả hai có thể được truy cập thông qua QGIS và tất nhiên là Esri ArcGIS nhưng hỗ trợ cho các loại dữ liệu này bị giới hạn bên ngoài các gói này. Mặc dù vậy, hãy cẩn thận với phiên bản, tôi sẽ thử tạo tuân thủ 9.3 vì hầu hết các phần mềm Esri mà bạn có khả năng gặp phải sẽ là 10+ và API cơ sở dữ liệu địa lý cho QGIS sẽ hỗ trợ phiên bản này. GeoJSON và KML cũng có thể hỗ trợ các trường văn bản lớn nhưng không thể đọc được.
Michael Promotionson

1
Umm, 9.3 không phải là một kế hoạch tốt để tương thích với cơ sở dữ liệu địa lý tệp - API FGDB không hỗ trợ .gdb kiểu 9.x.
Vince

1
Các shapefile @ElioDiaz vẫn tồn tại, mặc dù có những hạn chế, vì chúng là phương tiện truyền tải tính năng phổ biến nhất - gần như mọi gói GIS mở hoặc có thể nhập shapefile Esri. Định dạng là một tiêu chuẩn mở để bất kỳ ai cũng có thể đọc và thực hiện theo cách riêng của họ. Chắc chắn có các định dạng tính năng GIS vượt trội nhưng chúng không được áp dụng phổ biến ... chủ đề này đã được thảo luận nhiều lần trên GIS.SE. Nhiều như chúng ta mong muốn nếu không các shapefile có thể là mẫu số chung thấp nhất cho các tính năng trong một thời gian vì vậy chúng ta chỉ cần cười và chịu đựng nó.
Michael Promotionson

Câu trả lời:


18

Như @ user890 nói, điều này phụ thuộc rất nhiều vào cách dữ liệu sẽ được sử dụng. Chủ yếu có hai cách bạn có thể truy cập dữ liệu:

  1. Bằng cách tải tất cả vào bộ nhớ trong một lần và sau đó truy cập / truy vấn dữ liệu trong bộ nhớ.
  2. Bằng cách truy vấn các tính năng cụ thể, các hộp giới hạn, vv

Các định dạng như GeoJSON và KML phù hợp nhất cho các trường hợp khi bạn muốn tải mọi thứ trong một lần. Lợi ích là dữ liệu có thể được cấu trúc theo cách phù hợp hơn cho ứng dụng của bạn. Nhược điểm: kích thước tệp lớn hơn (vì chúng dựa trên văn bản) và không có khả năng thực hiện truy vấn hiệu quả trực tiếp từ tệp.

SQLite / Spatialite tốt hơn cho truy vấn (SQL), nhưng việc cấu trúc dữ liệu khó khăn hơn - bạn phải làm phẳng mọi thứ vào các bảng cơ sở dữ liệu và sau đó thực hiện THAM GIA (có thể tốn kém) khi truy vấn.

Thực sự không có một định dạng tệp hoàn hảo sẽ bao gồm tất cả (nhưng sau đó một lần nữa shapefiles lại rất xa, không hoàn hảo). Một cách khác để xem xét là cuộn định dạng dành riêng cho ứng dụng của bạn, nhưng điều này chỉ hoạt động nếu bạn không cần chia sẻ dữ liệu với thế giới bên ngoài.


14

Tôi nghĩ rằng danh sách Định dạng Vector OGR (liên kết được cập nhật) xác định chính xác về mọi định dạng nguồn mở mà tôi từng nghe và nhiều hơn nữa. Mỗi định dạng đó đều có những ưu điểm / nhược điểm riêng, vì vậy thật khó để nói đâu là 'tốt nhất'. Đối với các ứng dụng di động, tôi tưởng tượng kích thước tệp sẽ là một trong những yếu tố quyết định quan trọng hơn.

Đối với các ứng dụng di động, tôi nghĩ định dạng sqlite / spatialite sẽ là định dạng logic để bắt đầu. Tôi biết Android cung cấp hỗ trợ riêng cho sqlite. Vì vậy, giả sử bạn có thể tải các phần mở rộng không gian, bạn sẽ có một gis rất mạnh có sẵn cho bạn.

Tùy thuộc vào mức độ phiêu lưu của bạn, có vẻ như việc xây dựng gdal cho Android không phải là không thể. Sau đó, bạn có thể hình dung có nhiều định dạng hơn theo ý của bạn. Tôi chắc chắn nhiều người dùng trên trang web này sẽ quan tâm nếu bạn đi theo con đường này.


13

Một định dạng mới xuất hiện gần đây là Công viên địa chất . Đặc tả này được xây dựng trên cơ sở dữ liệu SQLite, do đó, nó có cùng cơ sở một tệp, nhưng với lợi ích bổ sung là trở thành một tiêu chuẩn OGC .
Đối với kích thước tệp, có thể định dạng lưu trữ nhỏ gọn hơn định dạng .shp.dbfđịnh dạng cho dữ liệu không gian và thuộc tính được sử dụng trong Shapefile. Do đó, GeoPackage có thể có cùng kích thước hoặc nhỏ hơn so với tổng số các tính năng tương tự trong một shapefile.
Bức ảnh này cho thấy một đường ống thoát nước ở San Diego được lưu dưới dạng cả Shapefile và GeoPackage. Như bạn có thể thấy, về cơ bản chúng có cùng kích thước. Kích thước Shapefile vs Geopackage
Vì định dạng này dựa trên SQLite, nên nó đã sẵn sàng cho các thiết bị di động. Nhiều ứng dụng đã sử dụng định dạng cơ sở dữ liệu này để lưu trữ, vì vậy đây là một công nghệ đã được chứng minh. Nó có thể được sử dụng đa nền tảng mà không cần bất kỳ bản dịch nào.


4

Đồng ý với Lennert, chọn định dạng phù hợp cho công việc.

Tuy nhiên tôi đã tìm thấy Spatialite là một định dạng khá linh hoạt. Bạn có một tệp duy nhất cho phép bạn linh hoạt trong việc lưu trữ và chia sẻ dữ liệu như một shapefile, nhưng bạn phủ nhận các vấn đề bạn đề cập với giới hạn ký tự; đồng thời cho bạn cơ hội khai thác lợi ích của cơ sở dữ liệu không gian.

Thật không may, nó không được hỗ trợ đầy đủ trong ArcGIS (Tôi đã không thử trong một thời gian ngắn nên tôi có thể sai), nhưng hoạt động rất tốt trong QGIS.


4

Có rất nhiều định dạng khác nhau và tốt nhất phụ thuộc vào tập dữ liệu của bạn, công cụ bạn sử dụng và những điều bạn muốn làm với nó.

Một số trong những cái tôi sử dụng:

  • Tệp cơ sở dữ liệu Geodatabase & spatialite: Một sản phẩm mà tôi muốn sử dụng. Nó có thể chứa tất cả các loại dữ liệu và có các mối quan hệ, lập chỉ mục ... Tôi sử dụng gdb khi làm việc trong môi trường Esri, spatialite cho bất cứ điều gì khác.

  • GeoJson: Định dạng dễ đọc Tôi thường sử dụng cho các bộ dữ liệu nhỏ không yêu cầu nhiều về cách lập chỉ mục

  • Cơ sở dữ liệu phù hợp: Tôi có xu hướng sử dụng điều này cho các tập dữ liệu lớn và các thuật toán phức tạp.

Nhưng có hàng tấn người khác là tốt.


3

Tôi khuyên bạn nên sử dụng cơ sở dữ liệu SQLite / spatiallite. Nó là một tệp duy nhất như geodatabase (một đến nhiều bảng / lớp bên trong) và có thể được sử dụng trong ArcGIS Desktop và QGIS.


Tôi đã lưu dữ liệu đa giác trong sqlite và tải dữ liệu đó bằng QGIS và nhận được thông báo "CRS không được xác định: mặc định là CRS EPSG: 4326 - WGS84". Nó không bị mất thông tin về chiếu?
Ichiro

Với phần mềm nào bạn đã lưu lớp đa giác thành sqlite?
nghệ thuật21

1

Các tùy chọn thực sự phụ thuộc vào ngôn ngữ bạn sẽ sử dụng và cách dữ liệu sẽ được sử dụng. Android rất có thể sẽ là Java. Mỗi lựa chọn sẽ là một loại so sánh chi phí / lợi ích dựa trên quyết định đó. Tất cả các định dạng dữ liệu được tối ưu hóa cho các trường hợp sử dụng nhất định.

Câu hỏi tiếp theo là làm thế nào dữ liệu sẽ được sử dụng. Ứng dụng di động sẽ chỉ đọc dữ liệu không gian? Hay nó sẽ được đọc và ghi dữ liệu thường xuyên? Tần suất nó sẽ trao đổi dữ liệu với các thiết bị hoặc máy chủ khác?

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.