Chuyển đổi tệp SimpleGeo Địa điểm tệp GeoJSON sang shapefile?


15

SimpleGeo gần đây đã cung cấp miễn phí bộ dữ liệu "Địa điểm" của họ, đó là TUYỆT VỜI, bởi vì bây giờ chúng tôi có thể sử dụng nó cho mục đích riêng của mình, thậm chí ngoại tuyến. Vì vậy, tôi đã đi về việc tải xuống tập dữ liệu 2GB , chứa các tệp quốc gia được nén ở định dạng GeoJSON.

Đây là nơi vấn đề của tôi bắt đầu ... khi tôi thử tải trực tiếp tệp quốc gia (* .geojson) vào QGIS hoặc thậm chí chuyển đổi nó thành shapefile bằng ogr2ogr, tôi kết thúc chỉ với tính năng 1 điểm.

Rõ ràng có nhiều dữ liệu có sẵn trong các tệp này mà tôi không thể "nhìn thấy" hoặc truy xuất, vậy tôi đang làm gì sai? Ai đó có thể cung cấp cho tôi bất kỳ đề xuất nào về cách biến các tệp này thành các tính năng có thể sử dụng được không?

Câu hỏi cập nhật: Tôi thực sự muốn chuyển đổi tệp Geojson thành shapefile (hoặc định dạng GIS tiêu chuẩn tương tự) để sử dụng trong phần mềm GIS trên máy tính để bàn.

Đoạn trích từ blog SimpleGeo vào ngày 1 tháng 8 năm 2011 :

"Bộ dữ liệu Muff Địa điểm của SimpleGeo hiện có sẵn để tải xuống miễn phí. Nếu bạn muốn nhận được 21 triệu + POI bao gồm 63 quốc gia, chúng tôi đã sẵn sàng giao cho bạn trong một tệp. Tệp này là về 2GB ở định dạng .ZIP và hãy nhớ, với giấy phép Muff, dữ liệu này trở thành của bạn - miễn phí và rõ ràng - để làm bất cứ điều gì bạn muốn. Chúng tôi hy vọng bạn sẽ làm được những điều tuyệt vời với nó! Bạn có thể tải xuống ngay bây giờ bằng cách nhấp vào đây. "

Cập nhật: ngày 12 tháng 1 năm 2012: Sau khi SimpleGeo được Urban Airship mua lại vào tháng 10 năm 2011, Urban Aiship cho biết, đã giảm bớt sự sẵn có của các phiên bản hiện tại của [SimpleGeo's] Địa điểm, Bối cảnh và Lưu trữ trong vài tháng tới. Ngày đích để rút phích cắm chính thức sẽ là ngày 31 tháng 3 năm 2012. Liên kết


3
+1. Nghe Matt Galligan của SimpleGeo đôi khi nói rằng dữ liệu định vị là vấn đề thực tế và nên được cung cấp miễn phí. Đó là bối cảnh nên được bán. Thật tốt khi thấy "họ" có nghĩa là nó. Cũng mong muốn tận dụng dữ liệu này.
Erick

Câu trả lời:


10

Hãy thử gói các tính năng sau:

{"type":"FeatureCollection","features":[ 

****ALL THE DATA HERE -- COMMA SEPARATED****

]}

và phân tách từng tính năng bằng dấu phẩy.

Ví dụ: đây là hai tính năng đầu tiên từ bộ dữ liệu IE:

{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237.json", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}}
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237.json", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}

... Và ở đây, chúng là một tính năng của GeoJSON:

{"type":"FeatureCollection","features":[ 
{"geometry": {"type": "Point", "coordinates": [-6.422587, 53.293363]}, "type": "Feature", "id": "SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237", "properties": {"website": "http://www.buongiorno.com", "city": "Dublin", "name": "Buongiorno", "tags": ["mobile", "vas", "community", "social-networking", "connected-devices", "android", "tablets", "smartphones"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_41u80gC4971D4Gc0Fv1p8q_53.293363_-6.422587@1308163237.json", "address": "Lake Drive City West Digital Park", "owner": "simplegeo", "postcode": "3050"}},
{"geometry": {"type": "Point", "coordinates": [-6.250848, 53.339347]}, "type": "Feature", "id": "SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237", "properties": {"website": "http://www.simchronise.com", "city": "Dublin", "name": "SIMchronise", "tags": ["mobile-solutions", "mobile-data", "data-synchronisation", "mobile-security", "backup", "restore", "mobile-contacts", "web-2.0-addressbook", "phonebackup"], "country": "IE", "classifiers": [{"category": "Professional", "type": "Services", "subcategory": "Computer Services"}], "href": "http://api.simplegeo.com/1.0/features/SG_1dnWbWIg8hX3VyfUKIDRz9_53.339347_-6.250848@1308163237.json", "address": "78 Merrion Square", "owner": "simplegeo", "postcode": "Dublin2"}}
]}

Sau khi bạn đăng bài tôi nhận ra rằng tôi thực sự không làm rõ câu hỏi của mình nên tôi đã chỉnh sửa nó. Tôi thực sự muốn chuyển đổi dữ liệu sang shapefile hoặc định dạng GIS tiêu chuẩn khác để sử dụng trong một máy tính để bàn. Xin lỗi vì câu hỏi kém nhưng cảm ơn vì câu trả lời @fod.
RyanKDalton-OffTheGridMaps

2
Câu trả lời của fod sẽ giúp bạn đi được nửa đường. Bạn sẽ cần xử lý trước tất cả các bãi chứa này để bọc các tính năng trong FeatureCollection như được đề xuất và tách biệt bằng dấu phẩy. Cách dễ dàng để thực hiện là thay thế tất cả các dòng mới bằng một, + dòng mới (nghĩa là \ n bằng, \ n), sau đó gửi kèm trong FeatureCollection, thông qua tập lệnh hoặc bằng trình chỉnh sửa văn bản. Sau khi bạn đã sửa tất cả các tệp thành GeoJSON thích hợp, thì bạn có thể sử dụng ogr2ogr v1.8.0 trở lên để chuyển đổi GeoJSON thành shapefile.
Sasa Ivetic

Thông minh! Tôi đã không nhận ra đây là những gì nó cần để làm cho chúng "có thể đọc được". Sử dụng phương pháp được mô tả ở trên, tôi có thể làm cho tệp có thể đọc trực tiếp thông qua QGIS. Cảm ơn nhiều! Tôi đã sử dụng bộ dữ liệu Mexico như một mẫu tốt, vì nó chỉ có kích thước tệp 9k. Bây giờ để giải quyết "tìm kiếm & thay thế" cho tệp US @ 7.4 GB.
RyanKDalton-OffTheGridMaps

Xin lỗi - Tôi không có thời gian để theo dõi sớm hơn nhưng FYI bạn có thể mở các tệp GeoJSON trực tiếp trong QGIS - không cần phải chuyển đổi sang shapefile. Sau đó, nếu bạn thực sự muốn một shapefile, bạn có thể xuất lớp theo định dạng đó (Layer-> Save As ...).
fod

Điều đầu tiên tôi đã thử là mở trực tiếp các tệp trong QGIS. Vấn đề là tất cả các dữ liệu đã được "gói" trong một bản ghi, và do đó một điểm. Tôi cần phải làm theo các hướng dẫn bạn để lại ở trên để QGIS nhận ra từng tính năng riêng lẻ trong bộ dữ liệu.
RyanKDalton-OffTheGridMaps

4

Cảm ơn bạn rất nhiều đến @fod & @Sasa Ivetic vì đã đưa tôi đi đúng hướng! Tôi đã phải đặt dự án này xuống một lúc nhưng cuối cùng đã quay lại với nó ngày hôm nay và muốn thông qua kết quả của tôi để giúp đỡ bất cứ ai khác có thể đã đấu tranh với điều này.

Sử dụng thông tin họ cung cấp trong câu trả lời của @ fod, tôi đã viết tập lệnh Python này để chuyển đổi các tệp kết xuất theo định dạng Geojson "phù hợp". Tập lệnh py này sẽ chuyển đổi dữ liệu thành định dạng có thể đọc được bởi ogr2ogr, sau đó bạn có thể chuyển đổi nó thành bất kỳ định dạng nào bạn muốn.

infile = sys.argv[1]
outfile = sys.argv[2]


## Prepare the input/output for read/write of files
fin = open(infile, 'r')
fout = open(outfile, 'w')


##Prepend the new file with approriate header info
fout.write('{"type":"FeatureCollection","features":[' + '\n')


## Read each line from the input and write to the output
for line in fin:
    ##write each line in the table, and replace carriage returns with "," + carriage return
    fout.write(line.replace("\n",",\n"))

##Append the new file with approriate footer info
fout.write(']}')

##Close the input and output files to release file locking
fin.close()
fout.close()

Lưu ý: bạn có thể gặp sự cố khi chuyển đổi tệp Geojson đã chuyển đổi qua ogr2ogr, do giới hạn bộ nhớ của hệ điều hành. Hãy xem câu hỏi liên quan này: gis.stackexchange.com/questions/16307/NH
RyanKDalton-OffTheGridMaps

Tuyệt quá ! Microsoft có giới hạn bộ nhớ

1

Bạn có thể thử FME để làm điều này. Nó đọc GeoJSON và viết Shape và - quan trọng hơn - có một loạt các "biến thế" để xử lý JSON (JSONExploder, JSONFlattener, JSONExtractor). Vì vậy, tôi nghĩ rằng nó sẽ giúp đưa nội dung ra một định dạng có thể sử dụng được.

Nó cũng có bản dùng thử miễn phí!

NB: Tôi làm việc cho Phần mềm an toàn, nhà sản xuất FME.


Có một số không gian làm việc mẫu cho biết cách viết từ Geojson sang shp?
kflaw 17/03/2015
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.