Как отобразить координаты на PNG-файле статической карты, когда они получены от GPS в R?
Итак, в настоящее время я успешно скомпилировал программу (с RInside) для построения координат на статических картах Google (на Qt).
Теперь я должен нанести координаты на карту, как они получены от GPS.
Можно ли как-то отобразить вновь нанесенные точки на png "на лету"?
Я имею в виду, я не хочу читать png с жесткого диска каждый раз, когда я получаю новую точку.
Отсюда: http://cran.r-project.org/web/packages/png/png.pdf
Этот пакет предоставляет простой и удобный способ чтения, записи и отображения растровых изображений, хранящихся в формате PNG. Он может читать и записывать как файлы, так и необработанные векторы в памяти.
Может ли это помочь?
#include <RInside.h>
#include <Rcpp.h>
#include <iostream>
int main (int argc, char *argv[])
{
std :: cout << "\nThank-SO :-)\n";
RInside R (argc, argv);
std :: string txtA = "library(RgoogleMaps)";
std :: string txtB = "png(filename='Rg.png', width=480, height=480)";
std :: string txtC = "lat = c(40.702147,40.718217,40.711614)";
std :: string txtD = "lon = c(-74.012318,-74.015794,-73.998284)";
std :: string txtE = "center = c(mean(lat), mean(lon))";
std :: string txtF = "zoom <- min(MaxZoom(range(lat), range(lon)))";
std :: string txtG = "MyMap <- GetMap(center=center, zoom=zoom, markers='&40.702147,-74.015794,blues%7C40.711614,-74.012318,greeng%7C40.718217,-73.998284,redc', destfile='My.png')";
std :: string txtH = "tmp <- PlotOnStaticMap(MyMap,lat=c(40.702147,40.711614,40.718217),lon=c(-74.015794,-74.012318,-73.998284),cex=1.5,pch=20,col=c('red', 'blue', 'green'),add=F)";
std :: string txtI = "dev.off()";
R.parseEvalQ (txtA);
R.parseEvalQ (txtB);
R.parseEvalQ (txtC);
R.parseEvalQ (txtD);
R.parseEvalQ (txtE);
R.parseEvalQ (txtF);
R.parseEvalQ (txtG);
R.parseEvalQ (txtH);
R.parseEvalQ (txtI);
return 0;
}
Это C++
код, написанный с RInside
,
1 ответ
Вы можете построить карту самостоятельно, используя png
пакет, который вы упоминаете (или другие инструменты), то вам нужен какой-то способ отображения между координатами графика и координатами GPS.
Если область карты достаточно мала, чтобы вы были довольны декартовым приближением, тогда простым способом является использование updateusr
функция в TeachingDemos
пакет, чтобы изменить координаты графика в соответствии с вашей широтой / долготой, вам нужно знать широту и долготу для 2 точек на карте, и вы можете найти их исходные координаты, используя locator
функция (или если они углы, то вам может не понадобиться locator
). Тогда вы можете просто использовать points
функция для добавления точек в верхней части карты без необходимости перечитывать или перерисовывать ее. Это, вероятно, хорошо, если карта относится к городу или небольшому региону, но может начать страдать от приближения, если вы пытаетесь показать целую страну.
Для разных проекций вы можете найти способ конвертировать из широты / долготы в текущие координаты графиков, а затем использовать points
с преобразованными координатами. sp
пакет и другие могут быть полезны здесь.
Несколько других пакетов для рассмотрения (если текущих функций в пакете недостаточно, вы все равно можете посмотреть на код, чтобы получить идеи и / или изменить код для использования ваших файлов png): RgoogleMaps
а также ggmap
,