Có bất kỳ nỗ lực để thay thế shapefile? [đóng cửa]


67

Gần đây, tôi đã dành rất nhiều thời gian để chuyển đổi các tên trường hoàn toàn tốt như "Phần trăm công dân từ 25 tuổi trở lên có bằng cử nhân trở lên" thành những thứ như "edbchogtr" để đáp ứng giới hạn tên trường 10 ký tự của DBF.

Trong một chủ đề khác (Thông tin về các đặc điểm kỹ thuật của Shapefile ), Geospatialpython nhận xét rằng "Mặc dù các sai sót của định dạng shapefile, những hạn chế và hạn chế của nó vẫn tồn tại một cách bướng bỉnh trong lĩnh vực GIS. lưu trữ vector đơn giản hoặc quá độc quyền. "

Hoạt động này cùng với nhận xét của ông Lawhead khiến tôi băn khoăn:

  • Có bất kỳ nỗ lực rõ ràng nào đã được thực hiện để thay thế shapefile như định dạng trao đổi và lưu trữ dữ liệu phổ biến của GIS không?
  • Có bất kỳ ứng cử viên?
  • Nếu đã có các định dạng cạnh tranh, tại sao họ thất bại?
  • Có phải Esri đã từ chối hỗ trợ họ, hay câu chuyện chỉ đơn giản là một quán tính công nghệ?
  • Nếu không có nỗ lực ... tại sao không?

Có vẻ như chúng ta có thể làm tốt hơn một chút cho bản thân mình, cả với tư cách là nhà phát triển và người dùng GIS.


2
@Mapperz Khác với API Geodatabase được phát hành gần đây, tôi không thấy bất kỳ công cụ nào để viết một cơ sở dữ liệu địa lý miễn phí. Tôi không nghĩ rằng điều này có thể được tính là sự thay thế ngoại trừ trong phần ESRI trên thế giới.
canisrufus

2
Bạn có thể viết và đọc cơ sở dữ liệu địa lý (thông qua API) bằng GDAL gdal.org/ogr/drv_filegdb.html bằng cách sử dụng resource.arcgis.com/content/geodatabase/10.0/file-gdb-api
Mapperz

1
Muốn xem API Python để đọc / ghi Cơ sở dữ liệu địa lý tệp (ít nhất là các tính năng đơn giản) mà không có giấy phép ArcGIS - đó sẽ là Mở.
PolyGeo

2
@PolyGeo bạn và mọi người khác :)
Ragi Yaser Burhum

3
@celenius Từ gdal.org/ogr/drv_shapefile.html "Hình học: Định dạng Shapefile sử dụng rõ ràng offset 32 ​​bit và do đó không thể vượt quá 8GB (thực tế không sử dụng offset 32 ​​bit cho các từ 16 bit). Do đó, không nên sử dụng tệp kích thước trên 4GB. Thuộc tính: Định dạng dbf không có bất kỳ sự bù trừ nào trong đó, vì vậy nó có thể lớn tùy ý. " Vì vậy, bạn có thể có các dbfs khá lớn, nhưng bạn phải cẩn thận với shp của bạn vượt quá 4GB. Sau đó, bạn đang chơi với lửa.
Ragi Yaser Burhum

Câu trả lời:


50

Đây là một chủ đề luôn luôn xuất hiện. Tôi có thể không có câu trả lời đúng, nhưng tôi có thể cho bạn ý kiến cá nhân của tôi .

Lý do mà chúng được hỗ trợ, có thể được quy cho một số đặc điểm về chúng, vì vậy hãy để tôi đề cập đến một vài.

  • Đầu tiên, có một thông số kỹ thuật . Ý tôi là, tôi đang ở tuổi ba mươi và điều này tồn tại từ khi tôi còn là một thiếu niên. Vì vậy, nó an toàn để nói rằng thông số kỹ thuật này đã được một thời gian. Tất nhiên, có một số định dạng khác cũng được xuất bản, nhưng sự khác biệt về cái này là ...

  • Nó tương đối đơn giản! Nó được xây dựng dựa trên Định dạng DBF , tại thời điểm đó đã tồn tại và được hỗ trợ rộng rãi trong một số nền tảng / HĐH. Đã có các trình phân tích cú pháp có thể đọc một nửa định dạng này (phần DBF), vì vậy nó đã hỗ trợ bổ sung dễ dàng hơn. Bạn có một hình học? Chắc chắn chỉ cần nối tiếp nó và viết nó. Bạn xong việc rồi. Tương phản điều này với một phạm vi bảo hiểm ! Cố gắng giải thích cho ai đó bằng những thuật ngữ đơn giản về cấu trúc liên kết sạch . Nó không phải là tầm thường để viết một phạm vi bảo hiểm tôpô.

  • Quan trọng nhất, tôi nghĩ lý do số 1 để các shapefile vẫn phổ biến là chúng được hỗ trợ trong cả hai hệ thống Nguồn mở và Độc quyền . Những gì bạn biết rằng GIS không hỗ trợ shapefiles?!? Không nghe.

Để thay thế, chúng tôi nghe nói về Tệp GeoDatabaseSpatialite . Cả hai định dạng, đều vượt trội hơn rất nhiều về chức năng, tính linh hoạt, tốc độ, v.v. khi so sánh với Shapefiles. Theo cách riêng của họ, họ có những thứ nhất định làm cho chúng tốt hơn nhau ở các khu vực khác nhau, nhưng so sánh spatialite và FileGDB chắc chắn nằm ngoài phạm vi của câu hỏi này.

Tôi có nghĩ rằng một trong hai định dạng này sẽ thay thế Shapefiles không? Không phải trong hiện thân của họ .

Tại sao?

Không phải vì một cuộc tranh luận về công nghệ (tôi đã nói rằng họ vượt trội về khía cạnh đó sau tất cả), mà vì một thứ khác: cấp phép.

Vậy vấn đề của họ là gì?

FileGDB :

FileGDB cung cấp khả năng tương tác thông qua API FileGDB mới. Tuy nhiên, API này được cung cấp ở định dạng nhị phânbởi ESRI. Đây không phải là một đặc điểm kỹ thuật. Đã từng làm việc trong nhóm GeoDatabase trong quá khứ, tôi có thể nói với bạn, trái với tất cả các nhà lý luận âm mưu đeo lá thiếc, điều này không độc hại chút nào. Đó là bởi vì các phần bên trong của GeoDatabase thay đổi trên mỗi bản phát hành. Xuất bản một thông số đầy đủ về cơ bản sẽ đòi hỏi phải cung cấp tất cả các chi tiết về cách mọi thứ được duy trì và sau đó ghi lại cẩn thận các thay đổi về định dạng với mỗi bản phát hành hàng năm. Nó không có ý nghĩa. Vì vậy, API FileGDB, mặc dù nó không phải là thông số kỹ thuật, nhưng nó trừu tượng hóa tất cả những thay đổi nhỏ đó. Và bây giờ nó có thể được sử dụng đa nền tảng! Tâm trí bạn, đây là một bước tiến lớn! Xem xét tính chất bảo thủ của ESRI, đây chắc chắn là một phản ứng đúng hướng.

Tuy nhiên, hỗ trợ chỉ nhị phân không làm cho bất kỳ ai trong thế giới Nguồn mở quá hạnh phúc. Làm thế nào để bạn tận dụng lợi thế của việc chuyển một số mã để nói với một số hương vị khác của Linux nếu ESRI không hỗ trợ nó. Bạn không thể. Đây là điều làm cho Nguồn mở trở nên mạnh mẽ và bây giờ, bạn không thể tận dụng lợi thế này. Nếu ESRI quyết định ngừng hỗ trợ Debian, thì đó là nó. Bạn xong việc rồi. Và bạn không thể làm gì để thay đổi nó.

Không gian :

Spatialite là tuyệt vời vì nó có tất cả các chức năng miễn phí từ SQLite . SQLite được sử dụng ở mọi nơi. Nó có trên Điện thoại Android, trên iPhone / iPad, trên Firefox, trên Google Chrome, trên một số thiết bị nhúng thương mại - có thể tồn tại mãi mãi. Để thực sự biến nó thành Geoformat (và không chỉ thực hiện các thao tác hộp giới hạn câm), nó cần phải tận dụng cùng một thư viện hình học mà PostGIS sử dụng: GEOS . Đáng buồn thay, GEOS dựa trên một thư viện hình học tuyệt vời hơn nữa được gọi là JTS . Tất cả các thuật toán trong JTS đều cực kỳ mạnh mẽ, vậy vấn đề là gì?

Chà, JTS được cấp phép là LGPL mã nguồn mở và LGPL là một giấy phép lan truyền . JTS là LGPL, có nghĩa là GEOS là LGPL, có nghĩa là không gian được liên kết tĩnh với GEOS là LGPL. Điều này thật tệ Tại sao? Không cần giải thích quá nhiều về giấy phép nguồn mở , tôi có thể nói với bạn rằng, ví dụ, tôi không thể sử dụng spatialite trên một ứng dụng iPhone vì điều đó sẽ khiến toàn bộ ứng dụng của tôi tự động mở nguồn (iOS chỉ cho phép liên kết tĩnh). Bất kỳ loại giấy phép GPL nào (một cách hợp lý) đều làm cho crap ra khỏi ESRI, và vì vậy họ sẽ không chạm vào nó với một cột 10 feet. Do đó, ArcGIS, hệ thống GIS phổ biến nhất trên thế giới không (và có lẽ sẽ không bao giờ) hỗ trợ spatialite nguyên bản. Điều này tự động giết nó như một định dạng khả thi.

Và do đó, chúng tôi quay trở lại các shapefile crappy được hỗ trợ ở khắp mọi nơi.

Cập nhật :

Rõ ràng câu trả lời của tôi đã gây tranh cãi đến mức ai đó quyết định rằng bạn có thể tự do chỉnh sửa và thay đổi toàn bộ ý nghĩa câu trả lời của tôi để đưa ra quan điểm của họ. Xin đừng làm vậy. Nếu bạn không đồng ý với tôi, điều đó hoàn toàn tốt, chỉ cần đăng ý kiến ​​của bạn trong một câu trả lời khác và để cộng đồng quyết định. Tôi đã ủng hộ các chỉnh sửa cho câu trả lời của tôi để hiển thị ý nghĩa ban đầu. Tôi đang thêm bản cập nhật này trong trường hợp bạn đọc câu trả lời được chỉnh sửa cho rằng sqlite là một định dạng khả thi.


Vấn đề với SQLite / Spatialite là nó không phải là định dạng, nó là một công cụ cơ sở dữ liệu quan hệ với thư viện không gian trên đầu trang. Mặc dù nó làm những gì nó làm rất tốt, nhưng nó buộc dữ liệu được lưu trữ theo cách quan hệ, đây không phải là cách phù hợp nhất. Ngoài ra, sự phức tạp của định dạng tệp SQLite ( sqlite.org/fileformat2.html ) gây khó khăn cho việc truy cập dữ liệu mà không có công cụ SQLite và do đó không phù hợp để trở thành định dạng tệp mở và dễ truy cập để trao đổi dữ liệu. Nó không thực sự được thiết kế cho điều đó.
Igor Brejc

8
Trên thực tế, LGPL không phải là giấy phép lan truyền - nó được thiết kế đặc biệt để tránh điều này. Ngoài ra, Spatialite được cấp phép theo giấy phép ( nguồn ) MPL , có nghĩa là trong số những thứ khác, bạn có thể chọn Giấy phép Công cộng Mozilla là giấy phép phù hợp nhất và hoạt động theo các điều khoản (copyleft) rất yếu. Tôi đọc ít nhất là ESRI không có lý do gì để không hỗ trợ Spatialite vì giấy phép - liệu họ có (sẽ cạnh tranh trong cùng một không gian như FileGDB) hay không ...
om_henners 21/212

3
@Ragi, bạn kết hợp sử dụng thư viện và chuyển nó. Tất nhiên porting sẽ phải là LGPL, vì đây thực chất là một công việc phái sinh. Nhưng nếu bạn liên kết nó một cách linh hoạt, nó không được coi là một tác phẩm phái sinh, thì đó là "công việc sử dụng thư viện" và bạn có thể giữ giấy phép của mình ( en.wikipedia.org/wiki/GNU_Lesser_General_Public_License ). Vì vậy, nói "LGPL là virus" mà không có giải thích thêm là không chính xác.
Igor Brejc

2
Nhưng một lần nữa, đây là một điểm cần thiết, vì Spatialite được cấp phép theo lược đồ được cấp phép cho cây ( Groups.google.com/forum/?fromgroups#!topic/spatialite-users/ ,), vì vậy bạn có thể chọn giấy phép phù hợp bạn nhất - MPL cho phép liên kết tĩnh.
Igor Brejc

2
@ bugmenot123 Tốt, sau đó sửa nó nếu bạn muốn, nhưng đừng buộc tội tôi truyền bá FUD về HĐH vì nó xúc phạm. Tôi đã viết mã hệ điều hành trong hơn một thập kỷ (sẽ không ngạc nhiên khi bạn thực sự đã sử dụng một số mã của tôi) và đó không phải là một lời nói giận dữ. Đó là sự thật - và nó vẫn còn. Liên kết động trong iOS của LGPL (tốt, chính xác là các khung , đã được cho phép trong iOS 8). Điều này chưa bao giờ là một vấn đề kỹ thuật, nhưng là một vấn đề pháp lý. Phân phối trong Appstore yêu cầu ký mã - và thật đáng buồn cho tất cả những người yêu thích hệ điều hành như tôi - LGPL là một giấy phép mờ cho việc này. Không có tiền lệ tại tòa án.
Ragi Yaser Burhum

18

Bản thân phần SHP + SHX không quá tệ. Vấn đề thực sự nằm ở phần DBF. Điều đó có thể làm với một định dạng mới, hỗ trợ unicode và tất cả các loại trường hiện đại. Vấn đề là làm cho nó được hỗ trợ tốt bởi tất cả các phần mềm hiện có.


6
+1 Việc cải thiện phần DBF hoàn toàn không khó: nó thực sự đi đến việc thuyết phục các nhà phát triển phần mềm đồng ý về điều gì đó.
whuber

1
Đã có một nỗ lực?
canisrufus

5
Tôi thường suy nghĩ về việc sửa đổi Shapefile chỉ đơn giản là thay thế tệp CSV UTF-8 cho DBF. Sẽ thật đơn giản để hỗ trợ và yêu cầu thay đổi tối thiểu đối với các gói phần mềm hiện có.
scw

1
@canis Fox Software đã thực hiện một nỗ lực nhỏ (độc quyền) vào cuối những năm 80. Sau khi MS mua chúng (khoảng năm 1990), đó là điều đó. Cộng đồng đã tạo ra một tiêu chuẩn DBF 3 và điều đó đã đóng băng tất cả sự phát triển. MS phát hành Access; FoxPro đã chết; thế giới chuyển sang
whuber

1
Ngược lại, các tệp @Uffe, CSV có thể được truy cập ngẫu nhiên: bạn chỉ cần một chỉ mục, giống như các tệp DBF thực hiện để tìm kiếm hiệu quả. Vấn đề lớn nhất mà tôi thấy là những thay đổi nhỏ dường như xảy ra một cách tự nhiên đối với các tệp CSV, như trích dẫn chuỗi hoặc chuyển đổi CR / LF, sẽ làm hỏng tất cả các độ lệch byte. Các chiều dài cố định cấu trúc kỷ lục của một tập tin DBF, mặc dù kém hiệu quả trong lưu trữ, không có vấn đề đó.
whuber

8

GeoPackage là một sự kế thừa đầy hứa hẹn. Nó tương tự như Spatialite nhưng từ OGC và được nhiều phần mềm chấp nhận, bao gồm ArcGIS và OGR.

Xem trang chủ chính thức http://www.geopackage.org/ và ví dụ: bản trình bày này: http://www.sl slideshoware.net/JeffYutzler/geopackage-swg-overview


7

Ít nhất spatialite có ý định, xem ví dụ: bản trình bày này http://www.sourcepole.ch/assets/2010/9/10/foss4g2010_spatialite.pdf

Mặt khác, tôi tin rằng lý do chính khiến nó thất bại là shp được hỗ trợ tốt bởi nhiều ứng dụng và chỉ có những thiếu sót nhỏ.

Những người khác cũng chia sẻ ý kiến ​​này:

Điều này không phải vì dự án SpatiaLite đã không cung cấp cho chúng tôi các công cụ để thực hiện, cộng đồng có thể ít quan tâm đến nó. SHP làm việc cho họ và không có lý do gì để thay đổi.

http://www.spativelyadjusted.com/2010/09/16/spatialite-is-not-the-shapefile-of-the-future/

Thêm suy nghĩ về tệp Esri geodatabase, spatialite và autodesk sdf tại đây: http://www.spatialdbadvisor.com/blog/121/the-shapefile-manifesto


Tuyệt vời như tôi nghĩ spatiaLite là, nó có ~ 3 megabyte chi phí cho các chức năng, hệ thống tham chiếu, v.v ... giữ cho nó không phải là một định dạng trao đổi toàn diện.
Scro

Trên thực tế, giấy phép cho spatialite ít hơn lý tưởng - nó không liên quan gì đến các công cụ.
Ragi Yaser Burhum

@Scro, 3 megabyte có quá lớn không? Nó chắc chắn không quá lớn cho máy tính để bàn. Bạn phải xem xét các thiết bị di động. Ngoài ra, có một API không gian khác, với chức năng tương đương, với kích thước nhỏ hơn Spatialite không?
klewis

@klewis - nó không quá lớn mỗi se, nó chỉ rất không hiệu quả khi bạn xem xét có rất nhiều bộ dữ liệu nhỏ (nghĩ <200kb) ngoài kia. Đó là rất nhiều chi phí, đặc biệt là thực tế là, sau khi nhận được, bạn thường để lại mỗi tập dữ liệu trong tệp 3mb hoặc cuộn nó vào cơ sở dữ liệu hiện có. Để rõ ràng, tôi <3 spatiaLite - nhưng chúng ta đang nói về việc truyền dữ liệu, trong đó một số loại tệp phẳng / xml / wkb sẽ hiệu quả hơn nhiều.
Scro

6

Esri đã quảng bá cơ sở dữ liệu địa lý tệp trong vài năm nay để thay thế cho shapefiles.

Gần đây, họ đã cung cấp một API che giấu mọi sự kỳ quặc.


Tôi đã không làm việc với cơ sở dữ liệu địa lý rất nhiều. Wikipedia cho biết chúng là một tiêu chuẩn "đóng", ví dụ thông số kỹ thuật cơ sở dữ liệu địa lý chưa được công bố. Có vẻ khó để có được áp dụng rất rộng mà không xuất bản nội bộ của định dạng. Mặc dù tôi còn quá trẻ để biết lịch sử, nhưng tôi đoán rằng các shapefile một phần rất phổ biến vì phần công khai của đặc tả. API có vẻ như là một bước tốt.
canisrufus

1
@canis bạn đúng rồi. Vào thời điểm đó, không ai sẽ chấp nhận các shapefile ngoại trừ ESRI đặc biệt quảng bá chúng dưới dạng định dạng trao đổi dữ liệu mở. Ngay cả với các công cụ phần mềm hạn chế có sẵn tại thời điểm đó, với việc ESRI phát hành một đặc tả .shp / .shx rõ ràng (và cam kết tuân thủ nó), việc viết mã để đọc và đọc chỉ mất vài giờ viết shapefiles: không cần kỹ thuật đảo ngược.
whuber

Miễn là API là một blob nhị phân hộp đen, FGDB sẽ không thấy việc áp dụng tương tự như SHP. Ngay cả khi Esri thuyết phục tất cả khách hàng của họ chuyển sang FGDB từ SHP, API không thực sự tương thích với nguồn mở.
dericke

3

Một phương ngữ XML, như GML, chắc chắn không được tối ưu hóa để vận hành các bộ dữ liệu khổng lồ, nhưng, có thể được sử dụng làm định dạng trao đổi giữa các phần mềm hoặc giữa các nền tảng.

Tôi không tin rằng có bất kỳ vấn đề nào với việc cấp phép (xem bài đăng của Ragi Yaser Burhum về đặc điểm virus của Spatialite) và khá dễ dàng để điều chỉnh các trình phân tích cú pháp hiện có nếu cần.


1
Tôi nghĩ rằng nó đã không được đề cập chỉ vì lý do bạn đưa ra, rằng nó không được tối ưu hóa cho các bộ dữ liệu lớn. XML là cồng kềnh. Các định dạng được đề cập ở đây là nhị phân, trong đó GML lưu trữ các điểm dưới dạng chuỗi. Kích thước có thể trên một thứ tự cường độ khác nhau.
canisrufus

3
Canisrufus là đúng. Có một số vấn đề với GML. Infoset có thể được điều hướng bằng XPath, nhưng bất kỳ ai đã cố gắng thực hiện lập chỉ mục không gian trên XML sẽ cho bạn biết điều này phi lý như thế nào và nó ảnh hưởng xấu đến cơ sở dữ liệu quan hệ truyền thống như thế nào. Không đi sâu vào nhiều chi tiết, nếu một cái gì đó cơ bản như lập chỉ mục và truy vấn trở nên không tầm thường, định dạng bị cồng kềnh và về cơ bản nó đòi hỏi bạn phải có toàn bộ dữ liệu trong bộ nhớ để làm bất cứ điều gì với nó, thì đây không phải là một lựa chọn tốt.
Ragi Yaser Burhum

4
xml bị cồng kềnh khi được lưu trữ dưới dạng văn bản thuần túy. Có các thư viện xml nhị phân có sẵn miễn phí (miễn phí và miễn phí sửa đổi và phân phối lại) có thể đóng vai trò thay thế cho các trình đọc xml, giúp mọi người tự do sử dụng cả khả năng đọc của xml và hiệu suất và hiệu quả lưu trữ của nhị phân . Lý do duy nhất tôi có thể nghĩ về nó không bao giờ được đưa lên một cách rộng rãi là như johandvw quan sát ở trên : không ai quan tâm, .shp đã "đủ tốt" như vậy.
matt wilkie

1

Chỉ cần nhìn từ góc độ khác, tôi không chắc việc sử dụng "Phần trăm công dân từ 25 tuổi trở lên có bằng cử nhân trở lên" là một tên trường hoàn toàn tốt. Trong khi trộn các khoảng trắng và dấu nháy đơn có thể được xử lý, nếu bạn đang viết mã hoặc truy vấn, nó có nhiều khả năng giới thiệu các lỗi.

Theo tôi, tương lai của phân phối dữ liệu không gian nên tập trung vào các dịch vụ web và web và đặc tả WFS (sử dụng GML) được mở và thiết lập. GeoJSON nhỏ hơn và có thể dễ dàng làm việc hơn với JavaScript. Tuy nhiên với nén kích thước là tương đương.

Tôi cũng muốn gửi một phiếu bầu cho Cơ sở dữ liệu địa lý cá nhân của ESRI . Nó có thể là định dạng sai của Microsoft, nhưng nó hỗ trợ ODBC, truy vấn SQL, chế độ xem và cho phép những người không phải là nhà phát triển tạo biểu mẫu nhập dữ liệu dễ dàng và bao gồm ít nhất một số mức kiểm tra tính toàn vẹn dữ liệu (kiểu dữ liệu, độ dài, giá trị duy nhất) .


Đó là một điểm hợp lệ. Điều tốt về họ là kiến ​​thức về ngôn ngữ tiếng Anh, người ta có thể hiểu ý nghĩa của các lĩnh vực.
canisrufus

Đó thực sự là vai trò của siêu dữ liệu bộ dữ liệu. Shapefile có thể sử dụng một tệp XML có cùng tên để lưu trữ tệp này.
địa lý
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.