Страница 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
-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
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
И у вас там табуляций Ёксель навставлял, похоже повлияло. Ёксель - зло. Сделайте как я говорил (см. пример), и будет вам щастье.