2013-06-05 10 views
12

Когда я смотрю на спецификации GeoJSON я вижу, что круги поддерживаются:круги geojson, поддерживаемые или нет?

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

Когда я попробовать код в geojsonlint (http://geojsonlint.com/), однако, он дает мне ошибку.

Вход:

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

Дает:

"Circle" is not a valid GeoJSON type. 

Я хочу, чтобы показать различные интересные места, с диапазоном влияния на карте с помощью d3. Для ввода данных требуется GeoJson, но верно, что круги не поддерживаются GeoJson?

+0

Вы caould переопределения 'L.Circle.toGeoJSON()', чтобы добавить дополнительные свойства, чтобы указать, что точка должна быть представлена ​​в виде окружности: https://github.com/Leaflet/Leaflet/issues/2888 Хотя он не является стандартным, он дает вам метаданные, которые нужно знать для представления в виде круга. –

+0

Ах да, но это будет решено с помощью листа листов api. Это сработало бы, но вы бы не использовали geojson как таковой, вы бы использовали функциональность, которую дает вам листок. D3 предложит аналогичное решение, которое не зависит от используемой библиотеки сопоставлений. – cantdutchthis

ответ

19

Когда я смотрю на спецификации GeoJSON я вижу, что круги поддерживаются

Они не являются. Кажется, вам удалось найти некоторые поддельные или неправильные спецификации. Перейдите на сайт geojson.org, чтобы найти specs, в кругах нет ничего.

+1

Я думаю, что он нашел что-то в черновике или предложениях вроде https://github.com/geojson/geojson-spec/issues/1 или https://github.com/geojson/geojson-spec/wiki/Proposal--- Circles-and-Ellipses-Geoms –

2

Нет круг поддержки от GeoJSON, но вы можете использовать ломаную линию для имитации круга

использовать LineString geiometry объект

"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, 
    }; 
    } 

это выглядит как круг на карте.

+0

Можно также сделать с помощью «Point», я уверен ... –

-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

Добро пожаловать в SO! Обратите внимание, что этот вопрос датируется 2013 годом (4 года назад!). Конечно, вы все равно можете отвечать на старые сообщения, но в этом случае обязательно укажите, почему ваш ответ лучше предыдущего. Это может быть связано с новыми технологиями, библиотекой и т. Д. В этом конкретном случае я не уверен, однако, что ваш пост дает ответ на вопрос: дело не в том, как нарисовать круг, но если в GeoJSON есть метаданные круга формат. – ghybs

 Смежные вопросы

  • Нет связанных вопросов^_^