Làm cách nào tôi có thể mã hóa địa lý thành hình thay vì tọa độ?


8

Mã hóa địa lý thành một hình dạng thay vì một điểm

Dự án tôi hiện đang làm là Find-A-Record . Chúng tôi đang thu thập mã hóa bộ sưu tập phả hệ và lưu trữ chúng trong một chỉ mục không gian (duyệt qua blog của chúng tôi nếu bạn muốn biết thêm). Tìm kiếm dựa trên một hình dạng. Chúng tôi trả lại các bộ sưu tập giao nhau hoặc được chứa trong khu vực tìm kiếm.

Trong những trạng thái phát triển ban đầu, chúng tôi đã sử dụng tên địa lý cho các bộ sưu tập mã địa lý đến một điểm. Điều này hoạt động tốt cho các bộ sưu tập được liên kết với các cấp hành chính thấp hơn như thành phố, thị trấn và làng. Tuy nhiên, nó thực sự bị phá vỡ khi bạn đạt được cấp quận, tiểu bang và quốc gia.

Cuộc điều tra dân số Hoa Kỳ năm 1940 được liên kết với Hoa Kỳ và sẽ được chỉ định một điểm ở Bắc Kansas. Bất kỳ truy vấn nào ở Hoa Kỳ không gần điểm đó sẽ không trả lại Tổng điều tra dân số Hoa Kỳ năm 1940.

Để giải quyết điều này, chúng ta cần các bộ sưu tập mã địa lý với hình dạng thay vì một điểm.

OSM

OpenStreetMaps có dữ liệu chúng tôi cần, nhưng cực kỳ khó trích xuất. Hệ thống phân cấp hành chính không được lưu trữ rõ ràng. Nominatim được sử dụng để giải quyết vấn đề này cho OSM, một tìm kiếm Nominatim chỉ trả về các tính năng. Vì vậy, một truy vấn cho Knighton trên Teme trả về hai điểm dừng xe buýt nhưng không phải là mối quan hệ ranh giới hành chính.

Các cầu vượt API trông có vẻ đầy hứa hẹn nhưng nó không thể làm trận chuỗi mờ. Cầu vượt chỉ có thể làm các trận đấu chính xác hoặc regex. Chúng tôi có thể sử dụng Overpass nếu có một cách dễ dàng để chuẩn hóa tên địa điểm. Nói cách khác, nếu OSM cung cấp một cách để chúng ta tiêu chuẩn hóa "Hiệp sĩ trên Teme, Worrouershire, Anh" thành "Hiệp sĩ trên Teme CP, Malvern Hills, Worrouershire, West Midlands, Anh, Vương quốc Anh" theo hệ thống phân cấp của OSM phù hợp sẽ không cần thiết.

Tóm lược

Những gì chúng ta cần là một dịch vụ cho phép chúng ta thực hiện tìm kiếm chuỗi mờ cho một địa điểm (hoặc cấp quản trị) và truy xuất ranh giới của nó.

Chúng tôi nhận ra rằng sẽ rất khó để có được dữ liệu ranh giới cho toàn thế giới. Rất may, có lẽ chúng tôi sẽ không cần đến sớm. Chúng tôi chỉ cần dữ liệu cho các khu vực trên thế giới nơi có hồ sơ phả hệ và các nhà phả hệ thực hiện nghiên cứu.

Có vẻ như chúng ta sẽ cần xây dựng dịch vụ của riêng mình, lập chỉ mục OSM theo cách cho phép chúng ta truy vấn các ranh giới quản trị. Nhưng chúng tôi thực sự không muốn. Có cách nào khác để chúng tôi có thể truy xuất dữ liệu này với các dịch vụ hiện có không?

Câu trả lời:


6

Dự án tuyệt vời! Bạn có thể xem MapIt: Global :

MapIt là một dịch vụ ánh xạ các điểm địa lý đến các khu vực hành chính. Phiên bản này dựa trên dữ liệu nguồn từ dự án OpenStreetMap hoàn toàn tuyệt vời , vì vậy hãy thêm ranh giới của bạn vào đó nếu chúng bị thiếu. Nếu bạn ở Vương quốc Anh, MapIt UK của chúng tôi có dữ liệu Khảo sát bản đồ mở có thể sẽ hữu ích hơn.

MapIt hữu ích cho bất kỳ ai có tọa độ của một điểm trên Trái đất và những người cần tìm hiểu quốc gia, khu vực, thành phố, khu vực bầu cử hoặc quốc gia nằm ở đâu. Nó cũng tuyệt vời để tìm kiếm hình dạng của tất cả các ranh giới.

Từ thiện, sử dụng khối lượng thấp của dịch vụ này là miễn phí - đọc thêm .

Bạn có thể tải về các nguồn trên Github .

Cần giấy phép? Đọc thêm hoặc liên lạc (thương mại@mysociety.org).


Điều đó khá gần. Tôi ước họ sẽ cho phép tìm kiếm chuỗi mặc dù. Chúng ta có thể làm khá nhiều điều tương tự với Overpass.

Cài đặt toàn bộ hệ thống trên các máy chủ của riêng bạn, đây là cách duy nhất để sử dụng kết quả về mặt thương mại, có vẻ là một quá trình khá phức tạp như được ghi lại tại code.mapit.mysociety.org (họ khuyến nghị dung lượng trống 500 GB nếu sử dụng OSM). Xin lưu ý rằng một trong những nguồn họ sử dụng, GADM, cũng có một hạn chế phi thương mại.
Rob Hoare

Họ có giấy phép thương mại theo global.mapit.mysociety.org/licensing
blah238

1
@JustinY: Xin chào, tôi là một trong những nhà phát triển đã làm việc trên MapIt: Global. Tôi đoán bạn đã thấy rằng bạn có thể tìm kiếm theo tiền tố chuỗi ( ví dụ ) - nếu bạn muốn tìm kiếm mờ tôi có thể đề nghị bạn yêu cầu điều đó trong trình theo dõi vấn đề không? Đó là một dự án nguồn mở, vì vậy ngay cả khi chúng tôi không có thời gian để làm việc đó, có lẽ một tình nguyện viên sẽ làm.
Mark Longair

1
@MarkLongair Gợi ý tuyệt vời. github.com/mysociety/mapit/issues/101

2

Hiện tại tôi cũng đang làm việc với các dấu vị trí và dữ liệu ranh giới toàn cầu (bao gồm cả lịch sử) để tôi hiểu những gì bạn đang trải qua!

Tuy nhiên, tôi nghĩ thực sự có hai bước cho vấn đề của bạn: 1. sử dụng tìm kiếm tên mờ để biến tên của khu vực quản trị thành tiêu chuẩn, sau đó 2. tìm kiếm ranh giới của địa điểm đó trong cơ sở dữ liệu về ranh giới. Thay vì cố gắng tìm dữ liệu cũng có một tìm kiếm mờ.

WeRelate Địa điểm có thể giúp với bước 1 cho tên địa điểm cũ và nhiều trình mã hóa địa lý khác như bạn đã sử dụng có thể tiêu chuẩn hóa tên hiện đại.

Bước 2 thực sự khó khăn hiện nay, vì phần lớn dữ liệu ranh giới phù hợp nằm dưới giấy phép phi thương mại (hoặc tệ hơn), đặc biệt là đối với dữ liệu lịch sử. Điểm khởi đầu cho các cấp quốc gia và cấp quản trị 1 là Trái đất tự nhiên .

Sau đó, có các nguồn dựa trên quốc gia cho các bộ phận quản trị thấp hơn, được trích xuất từ ​​dữ liệu chính phủ mở, chẳng hạn như USGeoJSONuk-atlas . Không có gì tôi biết là thực sự toàn cầu trong phạm vi.

Hãy cẩn thận để theo dõi nguồn gốc của dữ liệu và giấy phép, một hạn chế phi thương mại là rất phổ biến, ví dụ như đối với GADM , Tầm nhìn của AnhAtlas Hoa Kỳ về Ranh giới Hạt lịch sử .


Cảm ơn đã chỉ ra rằng có thể có hai bước. Nếu có một cách dễ dàng để sử dụng OSM để chuẩn hóa tên thì chúng ta có thể dễ dàng giải quyết vấn đề của mình (với các ranh giới mà OSM có sẵn).

Tại thời điểm này, chúng tôi không quá quan tâm đến việc có được dữ liệu chất lượng. Chúng tôi chủ yếu cần các khu vực quản trị lớn như tiểu bang và quốc gia. Dữ liệu quận chất lượng sẽ tốt nhưng không cần thiết.

Ở cấp độ đó, xuống tới adm1 ở mỗi quốc gia, Natural Earth có lẽ là lựa chọn tốt nhất của bạn để bắt đầu (ranh giới ADM0 và ADM1). Các tệp SHP có thể được chuyển đổi sang GeoJSON hoặc các định dạng khác với ogr2ogr và các tiện ích tương tự khác.
Rob Hoare

Wow, bằng cách nào đó tôi đã bỏ lỡ điều đó trong câu trả lời của bạn. Cảm ơn đã chỉ ra một lần nữa.

2

Truy vấn Nominatim của bạn bao gồm một place_idtrường có giá trị 4828147 trong ví dụ của bạn. Trường này đóng vai trò là định danh nội bộ cho Nominatim (vì vậy nó không phải là duy nhất trên toàn cầu). Nhưng nó có thể được sử dụng để xem hệ thống phân cấp địa chỉ nội bộ của Nominatim cho địa điểm này . Hệ thống phân cấp này cũng chứa các quan hệ biên, ví dụ như quan hệ 1875245 và một số khác.

Bằng cách đi qua danh sách này và nhìn vào admin_levelchìa khóa, có thể tìm thấy mối quan hệ bạn đang tìm kiếm. Thật không may, trang đặc biệt này dường như chưa có sẵn thông qua API.

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.