SASGIS - SAS.Планета
View Issue Details
0002194SAS.Планета[All Projects] Хотелкаpublic27-09-2013 11:2304-07-2023 10:23
Sergiyr23 
 
normalfeaturehave not tried
confirmedopen 
Windows7Ultimate
121010 
40xxxx 
0002194: Добавить километровую сетку
Добавить кнопку включения километровой сетки.
интерфейс, сетка, шкала
related to 0002017confirmed  Сетка шкалы масштаба 
related to 0002820confirmed  Добавить сетку UTM к уже существующим 
has duplicate 0003391closed vdemidov Добавить километровую сетку в меню Вид 
rar UTM_vector.rar (27,967) 18-06-2023 18:21
https://bugtracker.sasgis.org/file_download.php?file_id=2604&type=bug
zip grid-win32-v1.0.1.zip (545,946) 03-07-2023 09:49
https://bugtracker.sasgis.org/file_download.php?file_id=2606&type=bug
Issue History
27-09-2013 11:23Sergiyr23New Issue
27-09-2013 11:54zedProjectДомен, сайт, форум, багтрекер => SAS.Планета
27-09-2013 11:55zedNote Added: 0012974
27-09-2013 11:59Sergiyr23Note Added: 0012975
27-09-2013 12:03zedRelationship addedrelated to 0002017
27-09-2013 12:04zedNote Added: 0012976
27-09-2013 12:12Sergiyr23Note Added: 0012977
27-09-2013 12:13zedProduct Version => 121010
27-09-2013 12:13zedSummaryДополнить километровую и географическую сетку => Добавить километровую сетку
27-09-2013 12:13zedDescription Updatedbug_revision_view_page.php?rev_id=5750#r5750
27-09-2013 12:15zedTag Attached: интерфейс
27-09-2013 12:15zedTag Attached: сетка
27-09-2013 12:15zedTag Attached: шкала
27-09-2013 12:30Sergiyr23Note Added: 0012978
27-09-2013 12:33zedNote Added: 0012979
27-09-2013 12:42Sergiyr23Note Added: 0012980
27-09-2013 12:50zedNote Added: 0012981
01-10-2013 07:34vdemidovNote Added: 0013007
01-10-2013 08:26zedNote Added: 0013008
01-10-2013 08:35vdemidovNote Added: 0013009
01-10-2013 08:35zedNote Deleted: 0012976
01-10-2013 08:35zedNote Deleted: 0012977
01-10-2013 08:35zedNote Deleted: 0012978
01-10-2013 08:35zedNote Deleted: 0012979
01-10-2013 08:36zedNote Deleted: 0012980
01-10-2013 08:36zedNote Deleted: 0012981
01-10-2013 09:59TolikNote Added: 0013011
28-10-2013 07:55Sergiyr23Note Added: 0013131
28-10-2013 15:19zedNote Added: 0013136
28-10-2013 15:20zedNote Added: 0013137
28-10-2013 15:33Sergiyr23Note Added: 0013138
28-10-2013 15:34vdemidovStatusnew => confirmed
28-10-2013 15:34vdemidovTarget Version => 40xxxx
28-10-2013 15:35vdemidovNote Added: 0013139
28-10-2013 15:47zedNote Added: 0013140
28-10-2013 15:48zedNote Edited: 0013140bug_revision_view_page.php?bugnote_id=13140#r5792
28-10-2013 16:12Sergiyr23Note Added: 0013141
09-01-2019 12:37vdemidovRelationship addedhas duplicate 0003391
06-06-2023 07:52zedNote Added: 0020397
06-06-2023 10:46Nemo3001Note Added: 0020398
06-06-2023 10:51Nemo3001Note Added: 0020399
06-06-2023 10:52Nemo3001Note Added: 0020400
06-06-2023 10:52Nemo3001Note Added: 0020401
06-06-2023 11:19zedNote Edited: 0020397bug_revision_view_page.php?bugnote_id=20397#r7833
07-06-2023 18:11Nemo3001Note Added: 0020402
07-06-2023 18:30Nemo3001Note Edited: 0020402bug_revision_view_page.php?bugnote_id=20402#r7835
07-06-2023 19:01zedNote Added: 0020403
07-06-2023 21:18Nemo3001Note Added: 0020404
07-06-2023 21:20Nemo3001Note Edited: 0020404bug_revision_view_page.php?bugnote_id=20404#r7837
07-06-2023 21:24Nemo3001Note Edited: 0020404bug_revision_view_page.php?bugnote_id=20404#r7838
08-06-2023 06:59zedNote Added: 0020405
10-06-2023 19:16Nemo3001Note Added: 0020406
10-06-2023 19:19Nemo3001Note Edited: 0020406bug_revision_view_page.php?bugnote_id=20406#r7840
12-06-2023 00:20Nemo3001Note Edited: 0020406bug_revision_view_page.php?bugnote_id=20406#r7841
18-06-2023 18:21zedFile Added: UTM_vector.rar
18-06-2023 18:23zedNote Added: 0020407
19-06-2023 17:04Nemo3001Note Added: 0020408
20-06-2023 19:12zedNote Added: 0020409
28-06-2023 10:37zedFile Added: grid-win32-v1.0.0.zip
28-06-2023 10:48zedNote Added: 0020410
29-06-2023 12:53Nemo3001Note Added: 0020411
29-06-2023 18:10Nemo3001Note Added: 0020412
03-07-2023 09:49zedFile Deleted: grid-win32-v1.0.0.zip
03-07-2023 09:49zedFile Added: grid-win32-v1.0.1.zip
03-07-2023 09:50zedNote Deleted: 0020412
03-07-2023 09:50zedNote Deleted: 0020411
03-07-2023 09:55zedNote Edited: 0020410bug_revision_view_page.php?bugnote_id=20410#r7843
04-07-2023 10:23zedRelationship addedrelated to 0002820

Notes
(0012974)
zed   
27-09-2013 11:55   
>Добавить кнопку включения
Куда добавить?
(0012975)
Sergiyr23   
27-09-2013 11:59   
вид-километровая сетка
(0013007)
vdemidov   
01-10-2013 07:34   
Проблема с километровой сеткой, что ее нельзя нарисовать без искажений на всей карте мира. Лично мне совершенно непонятно как ее рисовать.
(0013008)
zed   
01-10-2013 08:26   
С искажениями и рисовать - в виде дуг.
(0013009)
vdemidov   
01-10-2013 08:35   
Ну вот я и не представляю как ее нарисовать. Хоть дугами, хоть зигзагами.
(0013011)
Tolik   
01-10-2013 09:59   
С учётом высот? :)
(0013131)
Sergiyr23   
28-10-2013 07:55   
Километровую сетку нужно добавить также как в OziExplorer.
(0013136)
zed   
28-10-2013 15:19   
>Километровую сетку нужно добавить также как в OziExplorer.
Мда, да вы оригинал :) Ну подскажите тогда, КАК это сделано в Ozi. Причём вопрос за техническую сторону вопроса, а не "вот там есть галочка, её нажимаешь и появляется сетка".
(0013137)
zed   
28-10-2013 15:20   
Вот тут немного теории и пример генерации сетки при помощи ArcInfo: Как построить километровую сетку
(0013138)
Sergiyr23   
28-10-2013 15:33   
Конечно это сложно сделать, но возможно.
(0013139)
vdemidov   
28-10-2013 15:35   
Ну вот и ждем добровольца, который это сможет сделать.
(0013140)
zed   
28-10-2013 15:47   
(edited on: 28-10-2013 15:48)
Насколько я понял из примеров сгенерированных сеток (например здесь), в пределах ячейки, линии сетки отрисовываются в виде прямых, но от ячейки к ячейке, направление прямых несколько изменяется и в итоге получаем дуги.

Так что, вся сложность задачи отрисовки километровой сетки сводится к правильным расчётам узловых точек в пределах видимой области экрана, с учётом того что:

Километровая сетка для советских топографических карт изначально строится в координатах проекции Гаусса-Крюгера (единица измерений — метры). Отсчёт координат в таких сетках ведётся от точки пересечения центрального меридиана данной зоны с экватором. Для того, чтобы избежать отрицательных координат, к абсциссе этой точки прибавляется 500000. А для того, чтобы избежать путаницы с разными зонами, перед 500000 приписывается ещё и номер зоны. Так, например, точка отсчёта километровой сетки для зоны 7 будет иметь координату [7500000;0]. Далее, откладывая от этой точки нужный интервал влево, вправо, вверх и вниз, мы получаем квадратики — собственно километровую сетку для этой зоны. В проекции Гаусса-Крюгера. Размер интервала зависит от масштаба. Так, для современных топокарт масштаба 1 : 200 000 размер ячейки составляет 4x4 километра. Для топокарт масштаба 1 : 100 000 — 2x2 километра. Для 1 : 50 000 — 1x1 километр. При необходимости такую сетку в дальнейшем можно перепроецировать в любую другую проекцию.

(0013141)
Sergiyr23   
28-10-2013 16:12   
Да, все верно. По примеру как километровая сетка для советских топографических карт.
(0020397)
zed   
06-06-2023 07:52   
(edited on: 06-06-2023 11:19)
Что-то с багтрекером случилось и пропали сообщения за последние сутки. Похоже на восстановление из бэкапа.

(0020398)
Nemo3001   
06-06-2023 10:46   
zed: >Что-то с багтрекером случилось и пропали сообщения за последние сутки. Похоже на восстановление из бэкапа.

Да, похоже на бэкап. И моя регистрационная запись в багтрекере исчезла, пришлось сейчас создавать ее заново. И в тексте этих моих сообщений, продублированных вами, отсутствуют мои исправления и уточнения, которые я делал чуть позже после публикации.

Особенно этот продублированный текст отличается от его окончательного варианта в пункте 2. Так что для простоты чтения этих удаленных моих сообщений, я, наверное, просто снова повторю их здесь на багтрекере в окончательном варианте полностью, хотя п.1 был сохранен и продублирован нормально, да и в п.3 изменения совсем небольшие.

То есть, восстановлю из моего личного бэкапа эти свои сообщения заново )
(0020399)
Nemo3001   
06-06-2023 10:51   
Вот три замечания насчет отображения километровой сетки в программе.

1. Было бы удобно добавить в меню "Вид" программы SAS.Планета кроме "Градусной сетки" еще и "Километровую сетку".
Как и для "Градусной сетки", в этом меню можно было бы сделать подменю с различными пунктами, например: "Нет", "1000 км", "100 км", "10 км", "1км", "100 м", "10 м", "Задано пользователем" (с полем для ввода шага сетки), "Автоматически".

Эта "Километровая сетка" отображала бы расстояние в километрах (целая часть числа) и в метрах (с тремя десятичными знаками после точки): по широте - от экватора, по долготе - от нулевого меридиана.
В остальном ее внешний вид, подписи и отображение на карте "Километровой сетки" можно было бы сделать такими же, как и у "Градусной сетки".

Такую километровую сетку в SAS.Планета можно было бы сделать по точной аналогии с градусной сеткой, отсчитывая ее от точки начала координат: 0, 0 (градусы).
Положительными значениями (в километрах), как обычно, могли бы быть северные и восточные координаты, а отрицательными - южные и западные.
(0020400)
Nemo3001   
06-06-2023 10:52   
2. Координата каждой точки на планете (на Земле, Марсе, Луне и тд), которую обычно выражают в градусах, вполне однозначно может быть выражена в километрах и метрах. Конечно, в строгой зависимости от выбранной в программе математической модели для формы планеты - шар, эллипсоид и т.д.

Например, в SAS.Планета несложно так перевести координаты точек:
для Москвы 55.75404, 37.62032 (градусы) -> 6206.511, 2327.498 (километры)
для Нью-Йорка 40.68931, -74.04453 (градусы) -> 4529.513, -6048.140 (километры)
для Сиднея -33.89086, 151.27680 (градусы) -> -3772.713, 11917.694 (километры)
для Рио-де-Жанейро -22.95244, -43.21045 (градусы) -> -2555.054, -4412.589 (километры)

Для работы с координатами в километрах вполне достаточно было бы иметь в программе две функции для перевода координат заданной точки из градусов в километры и из километров в градусы.
Если для шара эти функции могут быть очень простыми, то для эллипсоида над ними, конечно, придется поработать чуть дольше.

Например, для шара радиуса R (км) преобразовать координаты из градусов в километры можно упрощенно и так:
1) широта_км = широта_гр/180*Пи()*R
2) вычислить радиус окружности в км на заданной широте, R2:
   R2 = R*cos(широта_гр)
3) долгота_км = долгота_гр/180*Пи()*R2
И наоборот, из километров в градусы:
1) широта_гр = широта_км/Пи()/R*180
2) R2 = R*cos(широта_гр)
3) долгота_гр = долгота_км/Пи()/R2*180
Для Земли в этих формулах средний радиус R = 6371 км.

Но форма Земли сложнее шара, и для более точного отображения координат вместо шара обычно используется эллипсоид, так что точность такого упрощенного преобразования координат будет невысокая, хотя и достаточная для предварительного просмотра результатов и для приближенного отображения километровой сетки на экране при мелком масштабе карты.
Для эллипсоида формулы преобразования координат из градусов в километры и обратно будут посложнее.

И еще, нужно иметь в виду, что в этих простых формулах для шара широта определяется верно, как расстояние от точки до экватора вдоль меридиана, а вот долгота вычисляется неверно: она определяется по длине малой окружности, а кратчайшее расстояние измеряется по дуге большой окружности, проходящей через центр шара. Так что преобразовать координаты из градусов в километры и нарисовать какую-то километровую сетку по этим формулам, конечно, можно, но лучше использовать обычные формулы расчета расстояний по координатам.

Впрочем, в SAS.Планета уже есть готовая функция для измерения расстояний в километрах между точками с заданными координатами в градусах и перевести координаты точки из градусов в километры можно просто измерив расстояние от заданной точки до экватора и до нулевого меридиана.

Так что для отображения километровой сетки, возможно придется написать только обратную функцию для перевода координат из километров в градусы, если такой функции еще нет в программе.
(0020401)
Nemo3001   
06-06-2023 10:52   
3. И наконец, как отобразить километровую сетку в SAS.Планета, зная для любой точки планеты ее координаты и в градусах, и в километрах.
Сейчас при отображении градусной сетки ее линии выглядят отрезками прямых и показать их на карте несложно.
Линии километровой сетки на карте в SAS.Планета в общем случае будут, наверное, как-то изогнуты между узлами сетки.

Если это затруднит в программе их отображение на карте, то, как допустимый вариант, можно предложить отображать километровую сетку отрезками ломаной линии между узлами сетки.
В самом грубом виде - просто отрезками прямой между этими узлами. А в более аккуратном виде можно разделить растояние между узлами километровой сетки на 10,100 и т.д. частей и изображение такой ломаной линии на карте будет уже почти неотличимо от правильной кривой. Этот способ отображения на экране окружностей использует, например, Автокад, где в настройках программы можно задать количество сегментов для такой ломаной.

Замедление работы программы SAS.Планета при отображении такой километровой сетки будет зависеть и от заданного количества сегментов ломаной линии между соседними узлами сетки, и от производительности компьютера конкретного пользователя.
Поэтому для отображения километровой сетки можно было бы в этом случае добавить в подменю для "Вид" - "Километровая сетка" в пункте "Задано пользователем" не одно поле ввода (как для градусной сетки), а два поля: для ввода шага сетки (в км, с 3 знаками после точки) и для точности отображения сетки (количество сегментов ломаной между узлами сетки - от 1 до 1000 и больше).

Тогда пользователь мог бы сам выбирать необходимую аккуратность отображения километровой сетки на экране в зависимости от своих потребностей и от производительности своего компьютера.
(0020402)
Nemo3001   
07-06-2023 18:11   
(edited on: 07-06-2023 18:30)
Похоже, что для отображения километровой сетки в SAS.Планета в основном нужно иметь две функции для перевода координат точек: 1) из градусов в километры и 2) из километров в градусы.
Дальше вроде все было бы несложно:
-- определяются координаты начальной точки для отображения сетки в пределах экрана с координатой в метрах, кратной заданному шагу сетки
-- от нее в двойном цикле по широте и по долготе с заданным шагом сетки в километрах создается двумерный массив узлов сетки, видимых на экране
-- рисуется на экране километровая сетка по этим точкам, расположенным в узлах сетки, с известными их координатами в градусах

1) Причем первая из этих функций в SAS.Планета уже практически есть: имеющаяся функция для измерения расстояний в километрах между точками с заданными координатами в градусах позволят сразу перевести координаты точки из градусов в километры, просто измерив расстояние от заданной точки до экватора и до нулевого меридиана.
То есть, функция для перевода координат точки из градусов в километры делается не очень сложно.
Широта_км=Расстояние(точка(0, долгота_гр),точка(широта_гр, долгота_гр))
Долгота_км=Расстояние(точка(широта_гр, 0),точка(широта_гр, долгота_гр))

2) >для отображения километровой сетки, возможно придется написать только обратную функцию для перевода координат из километров в градусы, если такой функции еще нет в программе

Я поискал в Интернете формулы для функции перевода координат из километров в градусы. Пока готовых формул для такой функции я не нашел.

Но на сайте, где есть формула для вычисления расстояния на поверхности шара между точками с координатами, заданными в градусах, и которая, по словам relictus на форуме, используются также и в SatMap:
https://www.kobzarev.com/programming/calculation-of-distances-between-cities-on-their-coordinates/
в комментариях я увидел упоминание о формуле Vincenty, которая позволяет с большой точностью рассчитывать расстояние между пунктами на Земле, исходя из представления Земли в виде эллипсоида (то есть, в намного более сложной модели, чем шар).
Так вот, оказалось, что "формулы Винсенти — это два родственных итерационных метода, используемых в геодезии для расчета расстояния между двумя точками на поверхности сфероида"
https://en.wikipedia.org/wiki/Vincenty%27s_formulae
Расчет там довольно объемный, но ключевое понятие там оказалось подходящим и для нашего случая - итерация.

То есть, если есть аналитическое выражение, готовые формулы, то используем в программе их. А если готовых формул для функции перевода координат из километров в градусы у нас пока нет, то применяем итерацию и вычисляем нужное нам значение в цикле с необходимой точностью, используя имеющуюся у нас обратную функцию перевода координат из градусов в километры.
Это нагружает компьютера расчетами, но это лучше, чем вообще не браться за отображение километровой сетки в SAS.Планета.

Я помнил, что эту задачу перевода расстояния между точками из километров в градусы с помощью итерации я уже решал в программе SatMapSearchAndGo, где я захотел иметь возможность смещаться от заданной точки на указанное расстояние как в градусах, так и в метрах/километрах. В этой программе задаешь шаг смещения в метрах, и сразу получаешь, на сколько градусов на широте текущей точки получится это смещение.
https://forum.ru-board.com/topic.cgi?forum=5&topic=34341&start=1000

Например, в точке 0,0 задаешь смещение в 1000 км на восток и получаешь шаг смещения вдоль экватора в 8.9830911243 градусов, а на широте в 50 градусов шаг смещения по долготе в 1000 км дает уже значение в 13.9956693402 градусов.
Это значение я вычислял итерацией, подбирая смещение от исходной точки в градусах и добиваясь заданного расстояния от нее в 1000 км с точностью до 0.5 м, чтобы потом при любом округлении получить расстояние между точками с точностью до 1 метра.

Используя такую итерацию, можно, видимо, написать и для SAS.Планета функцию перевода координат точек из километров в градусы.
А уже имея ее, уже можно будет и добавить отображение километровой сетки в SAS.Планета.

(0020403)
zed   
07-06-2023 19:01   
У нас нет проблем с переводом градусов в метры и обратно практически для любой проекции, т.к. используется библиотека proj4 со всеми её плюшками. Так же нет никаких проблем в расчёте расстояний.

Вопрос только в реализации алгоритма наложения части сетки на конкретный тайл с заданными XYZ и разрешением 256*256 pix. Т.е. у нас так в программе устроено, что рисовать нужно не для всего экрана, а именно для конкретного тайла. И надо сделать так, чтобы изображение сетки на соседних тайлах совмещалось без артефактов (по типу разрыва линии на пиксель-другой).

Например, вот как это сделано для градусной сетки u_BitmapLayerProviderGridDegree.pas

И да, сетка должна быть не от балды, как вы описывали, а в проекции Гауса-Крюггера или UTM. И ещё как-то надо нормально обрабатывать ситуацию, когда происходит стыковка зон.
(0020404)
Nemo3001   
07-06-2023 21:18   
(edited on: 07-06-2023 21:24)
Если изображение километровой сетки на соседних тайлах сместится на пиксель-другой это будет, наверное, не очень точно и красиво, но пользоваться такой сеткой, наверное, можно будет, если эту проблему решить пока не удастся.

Но вот если рисовать километровую сетку на поверхности планеты, исходя из проекции Гауса-Крюггера с ее 6 градусными зонами и отсчетом координат от середины каждой зоны, то, кажется, не получится избежать пересечения линий такой километровой сетки одной зоны под углом к линии такой же сетки соседней зоны?
Но, может быть, это и не так - интересно, конечно, было бы посмотреть на результат такого отображения километровой сетки на карте поверхности Земли, отображающей большую территорию из нескольких соседних 6-ти градусных зон.

Наверное, стоит иметь возможность выбирать в SAS.Планета в отдельном пункте в меню "Вид" и отображение сетки для системы плоских прямоугольных координат, которая "является простой и удобной при проведении инженерных и топографо-геодезических работ", в пределах отдельных зон, для которых "в результате исследований было установлено, что оптимальные размеры территории изображения должны ограничиваться меридианами, отстоящими друг от друга на 6°"
https://ru.wikipedia.org/wiki/Проекция_Гаусса_—_Крюгера

Ведь наверняка есть много пользователей программы, специалистов, которым именно этого и не хватает сейчас в программе SAS.Планета, чтобы было удобно использовать такие стандартные прямоугольные координаты в своей работе.
И у меня есть знакомый, который просил как-то помочь ему перевести такие стандартные прямоугольные координаты, которые были записаны в таблице договора с подрядчиком для десятков объектов, в обычные географические координаты, чтобы хоть посмотреть на электронной карте, где же эти объекты все-таки находятся.

Но похоже, что тогда простой единой сплошной километровой сетки, которую ожидаешь увидеть размером на всю Землю, или на большую страну, или просто в любом месте карты и при любом ее масштабе, от общего до детального, независимо от этих зональных границ, так увидеть не получится.

Возможно, что каким-то другим пользователям программы, да и мне тоже, была бы очень удобна в использовании такая простая сплошная километровая сетка на карте поверхности Земли без разделения ее на зоны и с началом отсчета ее координат в одной точке, например, в точке с 0 градусов широты и долготы.
А не от середины каждой из шестидесяти 6-ти градусных зон с добавлением к значению абсциссы 500 км во избежание отрицательных значений координат, как в проекции Гаусса — Крюгера.
Или как в немного похожей на нее проекции UTM.
https://ru.wikipedia.org/wiki/Универсальная_поперечная_проекция_Меркатора

(0020405)
zed   
08-06-2023 06:59   
> интересно, конечно, было бы посмотреть на результат такого отображения километровой сетки

Как будет выглядеть пересечение сеток на границах зон, легко увидеть на сшитых генштабовских картах. Вот тут например. Ничего экстра необычного, просто клеточки сетки обрезаются.

> без разделения ее на зоны и с началом отсчета ее координат в одной точке

Насколько я понимаю, чем дальше от опорной точки проходит линия сетки, тем больший они имеет наклон. Ведь это на самом деле дуги, а не прямые. И через пару тысяч км от начала координат, сетка вообще завалится на бок...
(0020406)
Nemo3001   
10-06-2023 19:16   
(edited on: 12-06-2023 00:20)
>чем дальше от опорной точки проходит линия сетки, тем больший они имеет наклон. Ведь это на самом деле дуги, а не прямые. И через пару тысяч км от начала координат, сетка вообще завалится на бок...

Ну вот, после обсуждения этой моей километровой сетки и ее скриншотов на форуме SatMap, стало видно на картинках километровой сетки, что в мелком масштабе она не очень-то и похожа на сетку: количество узлов сетки на разных широтах разное, уменьшаясь по мере удаления широты от экватора к полюсам.
https://forum.ru-board.com/topic.cgi?forum=5&topic=34341&start=1200#13

Правда, в крупном масштабе, количество узлов сетки на разных широтах уже примерно одинаково, узлы сетки вдоль широты идут горизонтально, и линии сетки вдоль широты провести несложно, а вот вдоль меридианов узлы сетки расположены на разной долготе, так что сразу и понятно даже, какие вертикальные линии проводить и какие узлы сетки на соседних широтах соединять между собой у такой километровой сетки.

Так что такая километровая сетка с отсчетом координат ее узлов в километрах: по широте - от экватора, и по долготе - от нулевого меридиана, будет выглядеть в общем случае довольно сложно на вид - с горизонтальными линиями вдоль широт ее узлов и с наклонными линиями вдоль долготы, где будет неясно, какие узлы на соседних широтах сетки вообще нужно соединять - ну, наверное, в соответствии с расстоянием каждого соседнего узла от нулевого меридиана: вертикальными линиями соединять тогда можно будет узлы с одинаковым расстоянием от нулевого меридиана.

Такая сетка еще может отображаться просто в виде точек в узлах сетки, но вот с обычным отображением километровой сетки отрезками линий, пожалуй, тут будет некоторая сложность и для создания ее программистом, и для просмотра пользователями.

Впрочем, и такую километровую сетку для отображения при крупном масштабе карты показать на экране все-таки, наверное, можно.

(0020407)
zed   
18-06-2023 18:23   
Приложил набор zmp с сетками Генштаба и UTM от omen98, можно юзать пока сервер работает.
(0020408)
Nemo3001   
19-06-2023 17:04   
Попробовал использовать в программе эти сетки. В папку maps извлек из архива UTM_vector.rar папку UTM_vector со всеми 11 подпапками. В меню "Слои" появилось подменю "Сетки" с 11 вариантами километровых сеток.

Пользоваться сетками удобно, хотя не хватает вариантов сеток размером меньше 500 м: например, 200 м и 100 м, и размером больше 10 км: 20 км, 50 км, 100 км. Около экватора 6-ти градусная зона размером порядка 660 км, так что сетки больше 100-200 км будут уже, наверное, постоянно пересекаться с соседними зонами.

Цвета сеток белый и красный в общем-то хорошо видны на карте и их можно переключать между собой, если какой-то из них будет плохо виден. Можно включить красную сетку на белом снегу, или белую сетку в красноватой пустыне.

Области пересечения сеток на границе 6-ти градусных зон, кажется, пережить можно, если уж без таких особенностей сетки не обойтись. И пользоваться километровыми сетками там тоже довольно удобно.

Недостатки, которые пока обнаружил:
1. Сетки отображаются только для северного полушария планеты
https://fastpic.org/view/122/2023/0619/_0077f7895dfdeae7c23495f44a12ba61.jpg.html

2. Похоже, что при рисовании километровых сеток не используются значения sradiusa и sradiusb в разделе [PARAMS] файла params.txt: попытавшись наложить километровую сетку на карту "Космос\Луна (Google)", получил километровую сетку с размерами для Земли, и со шкалой расстояний на карте для Луны. Хотя ожидалось, конечно, что километровая сетка будет отображаться с учетом размеров планеты.
https://fastpic.org/view/122/2023/0619/_66173ad6545b9279f54bd8e83ce5b229.jpg.html

Правда, не знаю, правильно ли я для этого исправил файл params.txt. Я скопировал папку maps\UTM_vector в папку maps\UTM_vector_Moon, после чего изменил в ней файлы params.txt.
Чтобы сделать вариант этих сеток для Луны, создав в меню "Слои" подменю "Сетки на Луне", я изменил в файлах params.txt в разделе [PARAMS] строки: GUID (заменив последние 2 цифры на номер сетки), name, name_ru, NameInCache, ParentSubMenu, sradiusa и sradiusb.

Получилось, например, так:
[PARAMS]
pnum=102
GUID={11882D21-2B7F-2105-2118-1412633BC909}
asLayer=1
name=Utm_Grid_Vector_Moon
name_ru=09 Сетка Луна ГГЦ векторная_1km_Red
NameInCache=GGC_Vector_1000_Moon
DefURLBase=https://setka500.ru/GGC_vector2/utm.php
ContentType=application/vnd.google-earth.kml+xml
Ext=.kml
ParentSubMenu=Сетки на Луне
projection=1
CacheType=1
sradiusa=1737400
sradiusb=1737400
MaxConnectToServerCount=24

Может быть этих изменений в params.txt недостаточно, или нужны будут изменения где-то в программе, чтобы верно отображать километровые сетки не только для Земли, но и для Луны, Марса и других планет с учетом их радиуса.
(0020409)
zed   
20-06-2023 19:12   
Эти сетки по определению применимы только к Земле. Что там на других планетах - отдельная тема.
(0020410)
zed   
28-06-2023 10:48   
(edited on: 03-07-2023 09:55)
Написал свой сервер генерации векторных тайлов с сетками (см архив в аттаче и тут).

Доступные сетки (zmp для SAS в комплекте):
- географическая WGS 84;
- географическая Пулково-1942 (СК-42);
- координатная Гаусса-Крюгера / Пулково-1942 (зоны по 6 градусов);
- координатная UTM / WGS 84 (зоны по 6 градусов);
- координатная World Mercator.

Кроме того, через ini файл можно добавлять какие угодно сетки (естественно, с учётом возможностей proj4).

Шаг сетки задаётся в url вторым параметром. Для географических сеток в градусах, для координатных в километрах.

Если вдруг кому-то захочется что-то обсудить/предложить - велком по ссылке выше.