2009-07-07 34 views
36

Tôi tự hỏi nếu có bất kỳ API nào tôi có thể truy vấn dữ liệu OSM qua, ví dụ; Có phải (lon_1, lat_1) tại đất liền hoặc trên biển không? Hoặc có thể có được một hòn đảo như một đa giác được xác định rõ? Cách sử dụng duy nhất tôi đã thấy cho đến nay chỉ là các công cụ để hiển thị dữ liệu OSM (tạo các ô).Có API cho openstreetmap không?

+0

MapServer này có vẻ khá thú vị. Cảm ơn – vikingosegundo

+0

Bạn nên thêm bản cập nhật của mình làm câu trả lời và chấp nhận. –

Trả lời

1

Tôi đã tìm thấy API tuyệt vời để đọc dữ liệu Openstreetmap; Mapscript. Đây là giao diện cho MapServer, có thể đọc các tệp * .map và * .shp.Nó có thể sử dụng một chỉ mục không gian và do đó có khả năng cực kỳ nhanh. Tôi đã thực hiện tra cứu đa giác ngẫu nhiên (kiểm tra nếu một đa giác cắt nhau) của tập tin hình dạng đường bờ biển thế giới trong 40 ms.

2

Tất nhiên, api javascript được gọi là openlayers.

+1

Tôi biết về openlayers, nhưng không phải là chỉ để hiển thị/hoạt động trên gạch rendered? –

25

Có, có apixapi (api mở rộng).

Tôi chưa sử dụng chúng.

Nhưng cũng có cloudmade api tới OSM. Tôi chơi một chút với api python.

Tôi không chắc chắn, nếu có ai trong số họ có thể giúp bạn về vấn đề cụ thể của bạn, nhưng bạn có thể tìm kiếm coastline gần điểm của bạn. Nếu điểm của bạn nằm trong đa giác tagged natural=coastline, bạn có một hòn đảo (hoặc một lục địa) ...

+0

Định dạng XML mà nó cung cấp là gì và làm thế nào tôi sẽ hiển thị nó thành một hình ảnh raster trong ứng dụng của tôi? –

+3

để tạo iamge từ xml u cần trình kết xuất đồ họa. có một số. xem tại đây http://wiki.openstreetmap.org/wiki/Renderers – vikingosegundo

+0

Đối với các truy vấn lớn và phức tạp [API cầu vượt] (https://wiki.openstreetmap.org/wiki/Overpass_API) là cách để đi. – scai

9

Bạn có thể sử dụng API mã hóa địa lý của CloudMade để tìm kiếm một hòn đảo trong dữ liệu OpenStreetMap. API sẽ trả về hình học của kết quả theo mặc định và điều này nghe với tôi những gì bạn đang tìm kiếm. Ví dụ, Arran ngoài khơi bờ biển Scotland có thể được tìm thấy bằng cách yêu cầu http sau:.

http://geocoding.cloudmade.com/BC9A493B41014CAABB98F0471D759707/geocoding/find/Arran,UK.js?results=1

(và như là một ít hack gọn gàng, thay đổi .js để .html xem trước kết quả

Các tài liệu và ví dụ khác về API có tại developers.cloudmade.com/projects/show/geocoding-http-api Nếu bạn không muốn sử dụng http api, thì các API trừu tượng có sẵn bằng nhiều ngôn ngữ - ruby, python, perl và những người khác.

2

Tôi đã sử dụng các chiết xuất OSM CloudMade nhưng có một số vấn đề với chúng. Ví dụ, Na Uy đã bị cắt quá chặt, khiến một số tuyến đường trên bờ biển phía tây biến mất.

Hiện tại tôi thích API cầu vượt.

Đặt một cái gì đó như thế này thành dạng truy vấn ở http://www.overpass-api.de/query_form.html

<osm-script timeout="10000" element-limit="1073741824"> 
    <union into="_"> 
    <bbox-query into="_" s="52.3170669250001" n="52.4027433480001" w="4.80527567900009" e="4.97793537400008"/> 
    <recurse from="_" into="_" type="up"/> 
    <recurse from="_" into="_" type="down"/> 
    </union> 
    <print from="_" limit="" mode="meta" order="id"/> 
</osm-script> 

Đặt các giới hạn của khu vực bạn muốn, theo độ, trong s, n, các thuộc tính w và e của nguyên tố này.

1

MapQuest có một tập các API dịch vụ web 'Open' dựa trên dữ liệu OpenStreetMap với Điều khoản khá unrestrictive (tức Điều khoản theo dõi chặt chẽ như của OSM):

http://developer.mapquest.com/web/products/open

7

Không ai dường như đã nêu ở đây Tờ rơi API:
http://leafletjs.com/reference.html

+0

Điều này không thực sự trả lời những gì tác giả đã hỏi. Anh ta muốn một cách để truy vấn OpenStreetMap, chứ không phải để hiển thị một bản đồ. Leaflet là "một thư viện JavaScript mã nguồn mở cho các bản đồ tương tác thân thiện với điện thoại di động" được trích dẫn trên trang web của họ. –

Các vấn đề liên quan