Добавление маркеров в листок-карту, созданную из фрейма данных пространственных многоугольников

Я хочу поставить маркеры на основе долгой широты (у меня уже есть эти данные во фрейме данных) на карте, сделанной из файла пространственного многоугольника. Я могу сделать это на openstreetMap с помощью функции addTiles, но застрял в файле пространственного многоугольника. Ниже приведен код с картой openstreet в качестве фона.

    datm <- read.csv("lat_data2.csv", header = TRUE)
#This reads the lat long data file

образцы данных из этого файла:

brand      city         lon        lat
Tata Motors ADILABAD    78.5320107  19.6640624
Maruti  Adoni   77.2728368  15.6322227
Honda   Agra    78.5080745  27.1766701
Hyundai Agra    78.0080745  26.6766701

Затем я рисую его, используя

leaflet(data = datm)%>%
  addProviderTiles("Esri.WorldGrayCanvas", options = tileOptions(minZoom=5, maxZoom=7))%>%
  addMiniMap(position = "bottomright")%>%
  addMarkers(datm, lng = ~lon, lat = ~lat,label = ~datm$city,icon = ~caricon)
 #caricon is a list of png icon that i have made

что дает мне этот  Это результат Теперь я хочу видеть только карту Индии, так что есть способ сделать остальные страны пустыми.

Чтобы добиться этого, я пытаюсь проделать то же самое упражнение по нанесению маркеров на шейп-файл Индии. Есть ли альтернативный способ сделать это?

Когда я использую этот код

leaflet()%>%
    addPolygons(data = s)%>%
    addMarkers(lng = 73.229354, lat = 25.761765,popup = "single marker")
    # here s is a spatialolygondataframe of country india.

Я получаю это  введите описание изображения здесь

Но я не понимаю, как я могу ввести в качестве входных данных несколько широт, чтобы сделать маркеры. Я пробовал это

      leaflet()%>%

    addMarkers(lng = datm$lon, lat = datm$lat,popup = datm$city)%>%
  addPolygons(data = s) 

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


person Digvijay    schedule 01.09.2017    source источник


Ответы (1)


Используя ваш пример (называемый здесь df) и шейп-файл с именем india, читайте как india <- readOGR('INDIA.shp'), ваш код должен быть:

leaflet(data = df) %>%
  addProviderTiles("Esri.WorldGrayCanvas", options = tileOptions(minZoom=5, maxZoom=7))%>%
  addMiniMap(position = "bottomright")%>%
  addMarkers(df, lng = ~lon, lat = ~lat,label = ~df$city) %>%
  addPolygons(data = india)

Как видите, на карте появляется несколько маркеров.

введите здесь описание изображения

Проблема, с которой вы сталкиваетесь, связана с неправильным написанием синтаксиса для addMarkers, ~ необходимо указать в аргументах lat и lng.

person Patrik_P    schedule 01.09.2017
comment
Это прекрасно работает. Спасибо за помощь. Не могли бы вы дать мне ссылку, откуда вы скачали этот шейп-файл. Потому что все файлы shae, которые я нашел, политически некорректны, то есть они не показывают POK и другие спорные регионы. - person Digvijay; 04.09.2017
comment
Рад помочь! Файл формы был взят с веб-страницы ArcGIS arcgis.com/home/item.html?id = cf9b387de48248a687aafdd4cdff1127 - person Patrik_P; 04.09.2017