Страница 1 из 2
Изменить координаты шейп-файла
Добавлено: 27 мар 2025, 17:55
Iggi1981
Приветствую.
Дано: векторный слой (рамка будущей карты), сделана в проекции Пулково42-Гаусс-Крюгер зона 25.
Необходимо: вставить ее в карту в проекции Гаусс-Крюгер 21N так, чтобы она осталась симметричной, без поворота.
Есть решение?
Соответственно, сделать на карте фрейм с координатами зоны 25 по понятным причинам нельзя.
Re: Изменить координаты шейп-файла
Добавлено: 27 мар 2025, 19:30
tikhpetr
Я не очень понимаю, почему нельзя рамке назначить GK 21N, экспортировать ее в этой СК и все. Останется и та, и другая. Ну и на всякий случай сохранить два документа.
Re: Изменить координаты шейп-файла
Добавлено: 27 мар 2025, 20:31
Iggi1981
Потому что получается либо вот так, как на картинке, либо шейп улетает куда-то за экстент и найти его не получается ("приблизить к слою" неактивно).

- -5415745295884611801_121.jpg (110.8 КБ) 2001 просмотр
Re: Изменить координаты шейп-файла
Добавлено: 27 мар 2025, 20:43
tikhpetr
Давайте Вы выложите Ваш shp. Или ссылку. И карту. Можно на
tikh-petr@yandex.ru. Ес-сно, без передачи и дальнейшего использования. А то дольше обсуждать будем.
Re: Изменить координаты шейп-файла
Добавлено: 28 мар 2025, 08:36
gamm
Iggi1981 писал(а): ↑27 мар 2025, 20:31
Потому что получается либо вот так, как на картинке, либо шейп улетает куда-то за экстент и найти его не получается ("приблизить к слою" неактивно).
в ГК номер зоны (в миллионах) добавляется к горизонтальной координате (Х), потому и улетает. Нужно 25 заменить на 21 в Х (отнять 4,000,000), назначить (не перепоецируя) 21 зону, и, возможно, подвигать туда-сюда, чтобы не села поверх остального. Грузим shape в R/Python, меняем координаты, и правим зону в файле *.prj
Re: Изменить координаты шейп-файла
Добавлено: 28 мар 2025, 09:40
Iggi1981
gamm писал(а): ↑28 мар 2025, 08:36
Iggi1981 писал(а): ↑27 мар 2025, 20:31
Потому что получается либо вот так, как на картинке, либо шейп улетает куда-то за экстент и найти его не получается ("приблизить к слою" неактивно).
в ГК номер зоны (в миллионах) добавляется к горизонтальной координате (Х), потому и улетает. Нужно 25 заменить на 21 в Х (отнять 4,000,000), назначить (не перепоецируя) 21 зону, и, возможно, подвигать туда-сюда, чтобы не села поверх остального. Грузим shape в R/Python, меняем координаты, и правим зону в файле *.prj
Именно так и пробовал, вычислил геометрию, изменил координаты - правда, в ArcMap - R/Python у меня нет (что такое R - не знаю).
А они и не изменились, получается, в шейп-файле они как-то в неявном виде спрятаны.
Re: Изменить координаты шейп-файла
Добавлено: 28 мар 2025, 11:13
gamm
Iggi1981 писал(а): ↑28 мар 2025, 09:40
Именно так и пробовал, вычислил геометрию, изменил координаты - правда, в ArcMap - R/Python у меня нет (что такое R - не знаю).
А они и не изменились, получается, в шейп-файле они как-то в неявном виде спрятаны.
так не бывает, ничего там не спрятано, я его по байтам парсил

А проекцию поменяли в *.prj файле у шейпа? Экспортируйте результат в MIF/MID, и выложите начало MIF файла, включая пару-другую координат. И проекцию заодно выложите. Проще всего текстом, с тегами code ("</>"), он длинные тексты сам под спойлер упрячет.
P.S. R - это язык, широко известный в узких кругах статистиков, бесплатная версия коммерческой системы S-PLUS, ее раньше к Арке приделывали, чтобы разные статистики считать

Re: Изменить координаты шейп-файла
Добавлено: 28 мар 2025, 11:33
Iggi1981
gamm писал(а): ↑28 мар 2025, 11:13
так не бывает, ничего там не спрятано, я его по байтам парсил

А проекцию поменяли в *.prj файле у шейпа? Экспортируйте результат в MIF/MID, и выложите начало MIF файла, включая пару-другую координат. И проекцию заодно выложите. Проще всего текстом, с тегами code ("</>"), он длинные тексты сам под спойлер упрячет.
P.S. R - это язык, широко известный в узких кругах статистиков, бесплатная версия коммерческой системы S-PLUS, ее раньше к Арке приделывали, чтобы разные статистики считать
Я пока простой вариант покажу.
В атрибутивной таблице я вычел 21 миллион. В надежде, что координаты изменятся.
В таблице действительно изменились.

- ramka1.jpg (38.01 КБ) 1884 просмотра
А при экспорте в другую программу - я вижу, что координаты х так и остались вида 25хххххх. Тут как номер зоны не меняй - ничего не изменится.
P.S. Сделать MID/MIF не могу, заблокирована функция Quick export в "Data Interoperability tools".
Re: Изменить координаты шейп-файла
Добавлено: 28 мар 2025, 12:45
gamm
ни атрибутивная таблица, ни эта картинка, не имеют никакого отношения к решаемой задаче. Удачи!
P.S. Бесплатный GDAL (и бесплатный QGIS через тот же GDAL) прекрасно конвертируют шейпы во что угодно.
Re: Изменить координаты шейп-файла
Добавлено: 28 мар 2025, 12:59
Iggi1981
gamm писал(а): ↑28 мар 2025, 12:45
ни атрибутивная таблица, ни эта картинка, не имеют никакого отношения к решаемой задаче. Удачи!
P.S. Бесплатный GDAL (и бесплатный QGIS через тот же GDAL) прекрасно конвертируют шейпы во что угодно.
Код: Выделить всё
Version 300
Charset "Neutral"
Delimiter ","
CoordSys Earth Projection 8, 1001, "m", 148.5, 0, 1, 25500000, 0
Columns 7
OBJECTID LargeInt
ID LargeInt
L_WIDTH Decimal(13,11)
L_COLOR Decimal(19,11)
Shape_Leng Decimal(19,11)
x LargeInt
y LargeInt
Data
PLINE MULTIPLE 1
20
25416303.3881498 6655137.98194191
25425602.1202982 6654938.82832747
Проекция
PROJCS["Pulkovo_1942_GK_Zone_25",GEOGCS["GCS_Pulkovo_1942",DATUM["D_Pulkovo_1942",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",25500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",148.5],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
Re: Изменить координаты шейп-файла
Добавлено: 29 мар 2025, 14:57
gamm
координаты 25416303.3881498 6655137.98194191 нужно поменять на 21416303.3881498 6655137.98194191, и т.д., и поправить центральный меридиан, теоретически на 123, но у вас что-то странное с зоной, у 25 должно быть 147, у вас там 148.5
Можно прямо в MIF сделать, сменив центральный меридиан, и добавив для сдвига строку TRANSFORM (см. документацию на MIF), нужно только ее подобрать, чтобы село куда надо
тыц, а потом обратно в шейп, если надо.
Re: Изменить координаты шейп-файла
Добавлено: 29 мар 2025, 21:06
Iggi1981
Нет, сдаюсь.
Координаты поменял, но ничего не открывается ни в ArcMap, ни в QGis, ни в Oasis montaj. Точки менял на запятые, и обратно.
Спасибо всем откликнувшимся.
Re: Изменить координаты шейп-файла
Добавлено: 29 мар 2025, 21:09
gamm
Iggi1981 писал(а): ↑29 мар 2025, 21:06
Нет, сдаюсь.
Координаты поменял, но ничего не открывается ни в ArcMap, ни в QGis, ни в Oasis montaj. Точки менял на запятые, и обратно.
Спасибо всем откликнувшимся.
расскажите, что и где вы меняли, и покажите, что получилось (опять начал с парой координат). Должно работать, там ничего сложного. Ниже переделал ваш фрагмент, все читается
MIF
Код: Выделить всё
Version 300
Charset "Neutral"
Delimiter ","
CoordSys Earth Projection 8, 1001, "m", 123, 0, 1, 21500000, 0
TRANSFORM 1,1,-4000000,0
Columns 1
OBJECTID Decimal(9, 0)
Data
PLINE MULTIPLE 1
2
25416303.3881498 6655137.98194191
25425602.1202982 6654938.82832747
Pen (0,2,16711680)
MID
Re: Изменить координаты шейп-файла
Добавлено: 29 мар 2025, 21:20
Iggi1981
Я открыл mif-файл в excel. Заменил точки на запятые.
Вычел из первой колонки 25000000 (решил сделать без номера зоны, просто 21N).
Вернул точки-разделители обратно. Где были запятые - сделал запятые.
Файлы qmd и mid не трогал.
Код: Выделить всё
Version 300
Charset "Neutral"
Delimiter ","
CoordSys Earth Projection 8, 1001, "m", 123, 0, 1, 500000, 0
Columns 7
OBJECTID LargeInt
ID LargeInt
L_WIDTH Decimal(13,11)
L_COLOR Decimal(19,11)
Shape_Leng Decimal(19,11)
x LargeInt
y LargeInt
Data
PLINE MULTIPLE 1
20
416303.388150 6655137.9819419
425602.120298 6654938.8283275
434901.167102 6654763.1065461
444200.489200 6654610.8158495
453500.047243 6654481.9555890
462799.801941 6654376.5251149
472099.713863 6654294.5241795
481399.743736 6654235.9523325
490699.852239 6654200.8093242
500000.000106 6654189.0950048
509300.147923 6654200.8093246
518600.256426 6654235.9523333
527900.286348 6654294.5241811
537200.198321 6654376.5251175
546499.953020 6654481.9554921
555799.511113 6654610.8157540
565098.833262 6654763.1064523
574397.880167 6654938.8282366
583696.612464 6655137.9819558
583696.612464 6655137.9819558
Pen (1,2,0)
Re: Изменить координаты шейп-файла
Добавлено: 29 мар 2025, 21:36
gamm
И у вас там табуляций Ёксель навставлял, похоже повлияло. Ёксель - зло. Сделайте как я говорил (см. пример), и будет вам щастье.