Phối cảnh 3D trên bản đồ trong Tờ rơi, CartoDB?


12

Có thư viện JS nào ngoài đó sẽ hiển thị các bản đồ phẳng, bình thường (như Tờ rơi) thành một bản đồ phối cảnh như thế này, trên web:

nhập mô tả hình ảnh ở đây

Ngoài ra, có ai thấy bất cứ điều gì có thể biến dữ liệu CartoDB thành biểu diễn 3D, như thế này không?


1
Tôi không chắc chắn về việc tích hợp với cartodb, nhưng gần đây tôi đã thấy bài đăng này về việc tạo bản đồ 3D từ QGIS bằng thư viện ba.js. Bạn có thể muốn xem xét điều đó.
RyanKDalton



1
Có thể bạn thấy hình dung này hữu ích: pluto.cartodb.com/viz/bf4dacd4-003c-11e3-aaf8-a9294e572fad/iêu
javisantana

Câu trả lời:


7

Có lẽ bạn có thể sử dụng Osmbuildings . Đây là một thư viện JavaScript để trực quan hóa hình học xây dựng OpenStreetMaps (hoặc GeoJSON tùy chỉnh) thành phối cảnh 3D.

OSMbuildingJS

Nó sử dụng dữ liệu OpenStreetMaps trực tiếp. Chỉ cần thêm phương thức loadData ():

var map = new L.Map('map').setView([52.50440, 13.33522], 17);
var osmb = new OSMBuildings(map).loadData();
L.control.layers({}, { Buildings:osmb }).addTo(map); // add to layer switcher (optional)

Hoặc, bạn có thể tải GeoJSON của riêng bạn. Chỉ cần thay đổi phương thức loadData () thành setData (Geojson):

var osmb = new OSMBuildings(map).setData(geoJSON);

Dữ liệu của bạn cần phải có thuộc tính chiều cao và bạn có thể thay đổi màu tường và mái một cách linh hoạt:

osmb.setStyle({ 
     wallColor:'rgba(100, 100, 250, 0.701961)', 
     roofColor:'rgb(220, 220, 50)', 
     shadows:true 
});

Và thậm chí thay đổi phối cảnh bóng bằng cách đặt ban ngày:

osmb.setDate(new Date(2014, 3, 24, 13, 0));

Phiên bản hiện tại của Tòa nhà OSM (0.2.2b) không hỗ trợ setDataphương thức, nhưng sethoạt động! Nó trở thành:var osmb = new OSMBuildings(map).setData(geoJSON);
bradypus

4

Đây là một trong những trường hợp sử dụng chính cho ViziCities (thành phố 3D trong trình duyệt được cung cấp bởi OpenStreetMap), mặc dù các lớp dữ liệu hiện chưa hoạt động. Có lẽ một cái gì đó để xem xét cho tương lai: https://github.com/robhawkes/vizicities

Tuyên bố miễn trừ trách nhiệm: Tôi là nhà phát triển của ViziCities


1
Dự án tuyệt vời! Ngoài ra, mặc dù khá rõ ràng rằng đây là một dự án mà bạn đang liên kết, bạn có thể muốn làm cho nó rõ ràng hơn một chút (ngay cả khi đó là nguồn mở).
blah238

Cảm ơn, nhưng tôi đang tìm kiếm một giải pháp không phải là WebGL.
knutole

1
Không phải lo lắng, chỉ muốn cung cấp cho bạn một head-up.
Robin Hawkes

Phiên bản này có cốt truyện hay phiên bản cải tiến nào không?
joker21

2

Bạn có thể sử dụng OSM2world để truyền dữ liệu 2D từ OpenStreetMap (map.osm) sang các đối tượng 3D (map.obj), sau đó sử dụng một trình chuyển đổi khác ( convert_obj_three.py ) để chuyển đổi nó thành mô hình JSON bajs (map.js), sau đó sử dụng nó trong một cảnh bajs.

Bạn có thể xem làm thế nào ở đây:

https://www.youtube.com/watch?v=S6LbKH6NnZU


Cảm ơn rất nhiều. Nhưng điều này đòi hỏi WebGL, phải không?
knutole

1
Threejs đó là một thư viện javascript / api tận dụng lợi thế của WebGL. Nhưng trong mã bạn chỉ phải bao gồm hai lib: ba.js và OrbitControls.js (đây là để quản lý quỹ đạo của máy ảnh).
sigon

1
và có, bj chỉ hoạt động trong các trình duyệt được hỗ trợ bởi WebGL.
sigon

1

Gần nhất tôi từng thấy là tác phẩm của Mike Bostock .

Anh ta có một bản đồ thực sự tuyệt vời với một kiểu chiếu xiên .

Nhưng không có gì làm cho nó dễ dàng. D3 luôn hướng đến việc thiết lập các dự đoán. Bạn có thể làm những điều tuyệt vời nếu bạn làm việc tại đó mặc dù.


OK, làm thế nào Mike làm điều đó ?? Cảm ơn vì tiền boa
knutole


1

http://osm2world.org/ hoạt động mà không có WebGL, nhưng sử dụng Java thay vì js.

Được thiết kế cho đầu ra của dữ liệu tòa nhà Openstreetmap, nó cũng có thể được chấp nhận cho các dữ liệu 3D khác.

Đầu ra là một bản đồ slippy tương tự như tờ rơi: http://maps.osm2world.org/


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.