Изображение карты SHP и текущие координаты в QGIS
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
этот: http://www.mapwindow.org/documentation/ ... le.html#a7
проблема в том, что у карты нет СК. А это всеравно как умножать на 0
Нельзя пересчитать из ничего!
проблема в том, что у карты нет СК. А это всеравно как умножать на 0
Нельзя пересчитать из ничего!
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Спасибо, я нашел выше вашу ссылку на этот код. Ранее уже смотрел по ней - и ... забыл про нее ... Бывает.trir писал(а):этот: http://www.mapwindow.org/documentation/ ... le.html#a7
проблема в том, что у карты нет СК. А это всеравно как умножать на 0
Нельзя пересчитать из ничего!
Посмотрел в отладчике значение поля Map1.Projection. До ввода из файла оно равно нулю, после ввода - равно
65535. Вы именно по этому значению определяете, что у карты нет СК ?
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
Из исходников ProjToDegrees
case tmNotDefined
Код: Выделить всё
VARIANT_BOOL CMapView::ProjToDegrees(double projX, double projY, double* degreesLngX, double * degreesLatY)
{
*degreesLngX = 0.0;
*degreesLatY = 0.0;
switch(_transformationMode)
{
case tmNotDefined:
return VARIANT_FALSE;
case tmWgs84Complied:
*degreesLngX = projX;
*degreesLatY = projY;
return VARIANT_TRUE;
case tmDoTransformation:
IGeoProjection* gp = GetMapToWgs84Transform();
VARIANT_BOOL vb;
gp->Transform(&projX, &projY, &vb);
*degreesLngX = projX;
*degreesLatY = projY;
return vb;
}
return VARIANT_FALSE;
}
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Я вас понял. Согласно коду процедуры, изначально выходным координатам присваиваются нули, и, из-за того, что заходим в ветку case tmNotDefined, они возвращаются нулевыми. В слое система координат отсутствует начисто. То есть, как я понял, когда я в QGIS преобразовывал слой в другую проекцию, то сами шейпы преобразовались к новому виду, а СК не перенеслась и не создалась заново. И в QGIS нет возможности для преобразованного слоя создать соответствующую СК. Так ?trir писал(а):Из исходников ProjToDegreescase tmNotDefinedКод: Выделить всё
VARIANT_BOOL CMapView::ProjToDegrees(double projX, double projY, double* degreesLngX, double * degreesLatY) { *degreesLngX = 0.0; *degreesLatY = 0.0; switch(_transformationMode) { case tmNotDefined: return VARIANT_FALSE; case tmWgs84Complied: *degreesLngX = projX; *degreesLatY = projY; return VARIANT_TRUE; case tmDoTransformation: IGeoProjection* gp = GetMapToWgs84Transform(); VARIANT_BOOL vb; gp->Transform(&projX, &projY, &vb); *degreesLngX = projX; *degreesLatY = projY; return vb; } return VARIANT_FALSE; }
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
у shp'а есть .prj-файл?
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Такие файлы есть. Исходная проекция содержит в этом файле :trir писал(а):у shp'а есть .prj-файл?
Проекция, полученная в результате преобразования в Albers-Siberia, содержит в этом файле :GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],
PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
PROJCS["Albers",GEOGCS["GCS_Krassovsky, 1942",DATUM["D_unknown",SPHEROID["krass",6378245,298.3]],PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],PROJECTION["Albers"],PARAMETER["standard_parallel_1",52],
PARAMETER["standard_parallel_2",64],PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",105],PARAMETER["false_easting",18500000],
PARAMETER["false_northing",0],UNIT["Meter",1]]
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
Какое значение у Map1.GrabProjectionFromData?
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Для исходной и преобразованной проекций - True.trir писал(а):Какое значение у Map1.GrabProjectionFromData?
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
Сам назначь СК карте
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Камрад, простите, не понял - что значит "самому назначить" ? Нужно самому писать процедуру преобразования координат ?trir писал(а):Сам назначь СК карте
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
Код: Выделить всё
GeoProjection mapproj = new GeoProjection();
mapproj.ImportFromESRI(<сюда вставить орисание из .prj>);
Map1.GeoProjection = mapproj;
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Вставить в ImportFromESRI надо весь текст из файла .prj или только какую-то его часть ?trir писал(а):Код: Выделить всё
GeoProjection mapproj = new GeoProjection(); mapproj.ImportFromESRI(<сюда вставить орисание из .prj>); Map1.GeoProjection = mapproj;
После этого в обработчике перемещения мыши надо использовать функцию
Map1.GeoProjection.Transform( YY, XX ) ( как в коде, приведенном мною выше ) ?
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
1. весь текст
2. можно использовать ProjToDegrees
2. можно использовать ProjToDegrees
-
- Участник
- Сообщения: 83
- Зарегистрирован: 15 апр 2014, 13:31
- Репутация: -1
Re: Изображение карты SHP и текущие координаты в QGIS
Еще одно маленькое уточнение : Имею первую слой - в исходной проекции, и второй, преобразованный из первого в QGIS в проекцию Albers-Siberia. При вводе второго в функцию mapproj.ImportFromESRI вставлять содержимое из файла .prj для первого слоя или для второго ?trir писал(а):Код: Выделить всё
GeoProjection mapproj = new GeoProjection(); mapproj.ImportFromESRI(<сюда вставить орисание из .prj>); Map1.GeoProjection = mapproj;
-
- Гуру
- Сообщения: 5354
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: Изображение карты SHP и текущие координаты в QGIS
ProjToDegrees заработал?
По идее, надо устанавливать ту СК, в которой надо отображать карту. Но возникает вопрос - читается ли СК слоя из shp'а?
По идее, надо устанавливать ту СК, в которой надо отображать карту. Но возникает вопрос - читается ли СК слоя из shp'а?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя