Добрый вечер! Мне необходимо создать функцию, получения координат при фотографирование пользователем места. Естественно, с его разрешения. Координаты должны быть максимально точными с погрешностью до 2-3 метров. Прошу сказать, возможно ли это? Если да, то как приблизительно это сделать?
Нужно 2-е фотографии одного и того же места с двумя разными радиальными углами и с расстоянием между 2-х точек фотографирования около 5 метров.
Тогда у Вас будет визуальная и координатная триангуляция с некой погрешностью в обоих случаях (2-е погрешности).
Считаем каждую отдельно и сводим к средней общей. Затем, корректируем в обратную сторону и получаем точные координаты. Потом, берём среднее радиальное и получаем максимально точную единственную позицию.
Alex_87, также, как софт делает панорамные снимки. Пишите после 1-ой фотки: "Сместитесь на 5 метров левее или правее и сфотайте то же самое место/объект под другим углом."
Пока он идёт - считываете все промежуточные координаты gps. После второй фотки - пересылаете себе 2 фотки и координатный трекинг смещения пользователя.
Считаете - всё на сервере.
Alex_87, а дополнительно: фиксацию произвольного "опорного" объекта(-ов) в видоискателе (аналог луча) - не лучше ли сделать, в качестве доп. ориентира (как доп.компенсатор погрешности gps)?
Alex_87, по своему опыту - погрешность до 150 метров, зависит от модели телефона, особенно с айфонами грустно, съемка с того же места с другим ракурсом - привет 100 метров.
Alex_87, Попробую для одной фотки придумать:
При единственной фотографии - можно заставить отойти от точки фотографирования в двух противоположных направлениях (влево-вправо, например) метров на 4-5 в каждую сторону (чтобы получить три точки на одной прямой с точкой фотографирования в центре) и приложением (в этот момент) собирать все изменения координат.
И потом взять координаты GPS во время фото и заапроксимировать по трэку 2 крайние противоположные точки (расстояние между ними: length) и найти среднюю.
Потом, высчитать дельту погрешности:
DeltaX=(gpsX-[length]/2)
DeltaY=(gpsY-[length]/2)
И взять среднюю величину в превалирующем направлении, согласно трэку.