Как оценить цвет изображения Pyplot в данной точке?

Есть ли в Python метод оценки цвета на графике, который я создал с помощью pyplot? Я нарисовал несколько схем F1 в pyplot следующим образом: желтая схема на сером фоне

Далее в моем проекте нужно определить, находится ли точка на этом изображении на трассе или нет. Точки желтого цвета обозначают дорожку, красный квадрат — конец дорожки, а зеленый — начало. Я хотел бы определить цвет по любой координате на этом графике. Методы, в которых я использую файл JPG, неудобны, поскольку я хочу использовать реальные координаты. Например: этот путь находится между 24,464 и 24,478 северной широты и 54,620 и 54,690 восточной долготы. Могу ли я получить цвет точки (24.46823,54.66023)

Мне удалось найти только методы, использующие JPG-файл (Pillow), но преобразовать реальные координаты в правильную точку в JPG-файле не так уж просто и точно.

Есть ли в pyplot метод, который я пропустил, или, может быть, Skimage?

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

gboffi 24.06.2024 18:38

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

Tuur Vanlerberghe 24.06.2024 18:54

Matplotlib использует преобразование transData для перехода от ваших реальных координат к пиксельным координатам matplotlib.org/stable/users/explain/artists/…

RuthC 24.06.2024 19:52

Другим решением может быть игнорировать изображение и превратить трек и интересующую вас точку в объекты Shapely. Затем используйте метод Shapely difference, чтобы увидеть, насколько они близки shapely.readthedocs.io/en/stable/manual.html

RuthC 24.06.2024 19:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, это проблема XY.

Мое предложение — использовать операции ГИС и просто проверять, пересекается ли точка с контуром:

def is_inside_circuit(latlon, tolerance=0): # in meters
    from shapely import Point
    y, x = latlon # could be optional
    circuit = gdf
    if tolerance > 0:
        circuit = gdf.to_crs("EPSG:30340").buffer(tolerance)
    return circuit.to_crs(gdf.crs).intersects(Point(x, y)).squeeze()

is_inside_circuit((24.46997 , 54.605463))     # True
is_inside_circuit((24.46997 , 54.605563))     # False
is_inside_circuit((24.46997 , 54.605563), 10) # True

Используемый вход/схема:

import geopandas as gpd

url_yasmarina = (
    "https://raw.githubusercontent.com/bacinger/"
    "f1-circuits/master/circuits/ae-2009.geojson"
)

gdf = gpd.read_file(url_yasmarina)

Другие вопросы по теме