Попытка преобразовать долготу/широту в декартовы координаты

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

def ConvertPoint(self, Long, Lat, height, width):
    self.x = Long
    self.y = Lat
    self.x = angleToPointX(self.x, self.y, 3959)
    self.y = angleToPointY(self.x, self.y, 3959)
    pygame.draw.circle(self.window, (255,0,0), (int(self.x), int(self.y)), 5)
    print(self.x, self.y)

функции:

def angleToPointX(lat, long, magnitude=1.0):
    V = (math.cos(lat) * math.cos(long))
    return V

def angleToPointY(lat, long, magnitude=1.0):
    V = (math.sin(lat))
    return V

person CRS    schedule 09.04.2012    source источник
comment
возможный дубликат Преобразование из долготы\широты в декартовы координаты   -  person Justin ᚅᚔᚈᚄᚒᚔ    schedule 10.04.2012
comment
Как сказал Лев, в чем проблема?   -  person Joel Cornett    schedule 10.04.2012
comment
проблема в том, что как только я сделаю преобразование, какой должна быть величина, чтобы умножить ее на   -  person CRS    schedule 10.04.2012
comment
В ваших функциях angularToPoint, которые с самого начала подозрительны, поэтому независимо от переданной широты/долготы ваши возвращаемые значения будут очень маленькими (диапазон от -1 до +1). Попробуйте умножить возвращаемое значение на что-то вроде ширины в пикселях области, в которой вы пытаетесь расположить города. Но имейте в виду, что ваш angleToPointX дает вам очень необычный выбор проекции.   -  person Russell Borogove    schedule 10.04.2012


Ответы (2)


Какую картографическую проекцию вы используете? Широта/долгота могут использоваться непосредственно как y/x в цилиндрической проекции — это самый простой способ игры. В противном случае преобразование будет полностью зависеть от выбора проекции.

person Russell Borogove    schedule 09.04.2012

Я сталкивался с подобными проблемами в прошлом, и мне помогло это через это

person inspectorG4dget    schedule 09.04.2012