Найдено на тему «Python»:
8 апреля 2013, 16:43
15 февраля 2011, 19:13
Возникла задача отдавать карты используя static api яндекс.карт.
Как известно, координаты можно закодировать в base64, алгоритм приведен по ссылке: http://api.yandex.ru/maps
Так как сайт разрабатывается для мобильников, то на javascript не рассчитываю. Поэтому конвертирую координаты в base64 на сервере.
Сайт строится на Django, следовательно, написал метод на Python для конвертации. Метод привожу ниже, если есть какие-то замечания по улучшению, то милости просим.
#Метод для кодирования вершин ломаной
#аргумент: строка с координатами разделенными запятой (пример: 37.593578,55.735094,37.592159,55.732469,37.589374, 55.734162)
def encodeToBase64(aPoints):
keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789-_="
coordTuple = eval(aPoints)
coordList = []
diffList = []
reverseString = ""
encodedString = ""
for i in range(len(coordTuple)):
coordList.append(int(coordTuple[i] * 1000000))
diffList.append(toBin(coordList[0]))
diffList.append(toBin(coordList[1]))
for index in range(len(coordList)):
if index+2 < len(coordList):
diffList.append(toBin(coordList[index+2] - coordList[index]))
binString = "".join(diffList)
for i in range(len(binString)/32):
fourByteString = binString[i*32:(i+1)*32]
byte1 = fourByteString[0:8]
byte2 = fourByteString[8:16]
byte3 = fourByteString[16:24]
byte4 = fourByteString[24:32]
reverseFourByteString = byte4 + byte3 + byte2 + byte1
reverseString += reverseFourByteString
for i in range(len(reverseString)/6):
encodedString += keyStr[int(reverseString[i*6:(i+1)*6], 2)]
remainder = len(binString)%6
if remainder:
lastString = reverseString[-1*remainder:]
for i in range(6 - remainder):
lastString += "0"
encodedString += keyStr[int(lastString, 2)]
for j in range(0, 6-remainder, 2):
encodedString += "="
return encodedString
#Метод для пробразования целого в 32-х битное двоичное предстваление
#аргументы: целое, count - количество битов
def toBin(x, count=32):
return "".join(map(lambda y:str((x>>y)&1), range(count-1, -1, -1)))
17 сентября 2010, 14:19
Привет :)
Может кто знает, есть ли уже библиотеки на питоне для работы и парсинга YMapsML ? В частности ответов от геокодера.
Стандартный xml.dom.minidom.parse ругается :
ExpatError: unbound prefix: line 2, column 0Ищу чем лучше и правильней парсить на питоне такой xml.