2013-06-05 27 views
12

Khi tôi nhìn lên các thông số kỹ thuật của GeoJSON Tôi thấy rằng vòng tròn được hỗ trợ:vòng kết nối geojson, được hỗ trợ hay không?

http://geopriv.dreamhosters.com/geojson/geojson-spec.html#circleExample

Khi tôi thử các mã trong geojsonlint (http://geojsonlint.com/) tuy nhiên, nó mang lại cho tôi một lỗi.

Input:

{ 
"type": "Circle", 
"coordinates": [4.884, 52.353], 
"radius": 200 
} 

Cung cấp:

"Circle" is not a valid GeoJSON type. 

Tôi muốn hiển thị nhiều nơi khác nhau của lợi ích với một loạt các ảnh hưởng trên bản đồ bằng cách sử dụng d3. Nó cần GeoJson cho đầu vào nhưng đúng là vòng tròn không được hỗ trợ với GeoJson?

+0

Bạn caould ghi đè 'L.Circle.toGeoJSON() 'để thêm thuộc tính bổ sung để cho biết rằng các điểm cần được biểu diễn dưới dạng một vòng tròn: https://github.com/Leaflet/Leaflet/issues/2888 Mặc dù nó không phải là tiêu chuẩn, nó cung cấp cho bạn siêu dữ liệu để biết để đại diện cho một vòng tròn. –

+0

Ah có, nhưng điều đó sẽ được giải quyết bằng cách sử dụng api Leaflet. Điều này sẽ làm việc nhưng bạn sẽ không sử dụng geojson cho mỗi se, bạn sẽ sử dụng các chức năng mà tờ rơi cung cấp cho bạn. D3 sẽ cung cấp một giải pháp tương tự độc lập với thư viện ánh xạ mà bạn sử dụng. – cantdutchthis

Trả lời

19

Khi tôi nhìn lên các thông số kỹ thuật của GeoJSON Tôi thấy rằng vòng tròn được hỗ trợ

Họ không phải. Có vẻ như bạn đã tìm thấy một số thông số kỹ thuật giả hoặc không chính xác. Truy cập geojson.org để tìm số specs, không có gì về vòng kết nối.

+1

Tôi nghĩ anh ấy đã tìm thấy nội dung nào đó trong bản nháp hoặc các đề xuất như ở đây https://github.com/geojson/geojson-spec/issues/1 hoặc https://github.com/geojson/geojson-spec/wiki/Proposal--- Circles-and-Ellipses-Geoms –

2

Không vòng tròn hỗ trợ từ GeoJSON, nhưng bạn có thể sử dụng LineString để mô phỏng một vòng tròn

sử dụng LineString geiometry đối tượng

"geometry": { 
     "type": "LineString", 
     "coordinates": [ 
        [center_X, center_y], 
        [center_X, center_y] 
       ] 
     } 
then set the dynamic style use radius as the strokeweight 
function featureStyle(feature){ 
    return { 
     strokeWeight: radius, 
    }; 
    } 

nó trông giống như một vòng tròn trên bản đồ.

+0

Cũng có thể được thực hiện với một 'Điểm', tôi khá chắc chắn ... –

-1
A circle... some code I use for making a circle for an OpenStreetMap 

-- x is decimal latitude 
-- y is decimal longitude 
-- r is radius -- .00010 is about 40m in OSM (3 about 50km) 

-- Adjust for map latitude distortion further north or south 

x = math.log(math.tan((90 + x) * math.pi/360))/(math.pi/180) 

-- For loop to gather all the points of circle here 1 to 360 
-- can also use the for loop to make some other interesting shapes 

for i = 1, 360 do 
    angle = i * math.pi/180 
    ptx = x + r * math.cos(angle) 
    pty = y + r * math.sin(angle) 

-- readjust latitude for map distortion 

    ptx = 180/math.pi * (2 * math.atan(math.exp(ptx * math.pi/180)) - math.pi/2) 

-- Build an array of positions for GeoJSON - formatted lat and long 

    data[i] = '[' .. string.format("%.6f",pty) .. "," 
    data[i] = data[i] .. string.format("%.6f",ptx) .. ']' 

-- End of for loop 
end 

-- Cycle through the data array with another for loop to build the 
    coordinates (put in brackets and commas etc. for the actual 
    GeoJSON coordinates string. Add data[1] to the end to close 
    the polygon (circle). A circle. 

-- If you want a solid circle then use fill and a hex color 
-- If you want a LineString just make fill invisible or #ffffff 
     Include the stroke-width and stroke-color parameters as well. 
-- If latitude is greater than 89.5 or less than -89.5 you may wish 
    to cut off the circle by drawing a line at polar regions by using 
    those latitudes. 
-- I use this simply for several circles and not for hundreds of them. 

Cheers! 
-- 
+2

Chào mừng bạn đến với SO! Xin lưu ý rằng câu hỏi này có từ năm 2013 (4 năm trước!). Tất nhiên bạn vẫn có thể trả lời các bài đăng cũ, nhưng trong trường hợp đó, hãy đảm bảo nêu bật tại sao câu trả lời của bạn tốt hơn câu trả lời trước đó. Điều này có thể nhờ vào công nghệ mới, thư viện, v.v. Trong trường hợp cụ thể này, tôi không chắc rằng bài viết của bạn cung cấp câu trả lời cho câu hỏi: điểm không phải là cách vẽ vòng tròn, nhưng nếu siêu dữ liệu vòng tròn hợp lệ trong GeoJSON định dạng. – ghybs

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