Название города с географическими координатами PHP скрипт? - PullRequest
3 голосов
/ 11 июля 2010

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

Входные данные: Название города ИЛИ Название города, страна

Iзнаю, что есть бесплатная база данных под названием GeoNames , где вы можете скачать базу данных, которая содержит эту информацию, но я действительно не знаю, как экспортировать эту базу данных на мой сервер MySQL, есть 3 файла, которые могут быть мне нужныно я не знаю, что мне нужно выбрать:

cities1000.zip                             11-Jul-2010 01:13  3.4M  
cities15000.zip                            11-Jul-2010 01:13  1.1M  
cities5000.zip                             11-Jul-2010 01:13  1.8M  

посмотрите, были ли эти файлы

Итак, хорошая идея использовать эту базу данных ?,такое онлайн-API для этого ?, как я могу импортировать данные из cityXXXX в MySQL? Какие-либо предложения для сценария php? ... Спасибо!

Ответы [ 2 ]

8 голосов
/ 11 июля 2010

Я использую Карты Google, чтобы получить любую информацию о местоположении: http://code.google.com/apis/maps/index.html

Он может возвращать данные в XML или JSON, чтобы вы могли легко анализировать и сохранять данные.

Вот пример ссылки для Вашингтона, округ Колумбия: http://maps.google.com/maps/geo?output=xml&oe=utf8&sensor=false&hl=en&q=washington%20dc

Он вернет эти данные XML:

    <?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0">
    <Response>
        <name>washington dc</name>
        <Status>
            <code>200</code>
            <request>geocode</request>
        </Status>
        <Placemark id="p1">
            <address>Washington, DC, USA</address>
            <AddressDetails Accuracy="4" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
                <Country>
                    <CountryNameCode>US</CountryNameCode>
                    <CountryName>USA</CountryName>
                    <AdministrativeArea>
                        <AdministrativeAreaName>DC</AdministrativeAreaName>
                        <SubAdministrativeArea>
                            <SubAdministrativeAreaName>District of Columbia</SubAdministrativeAreaName>
                            <Locality>
                                <LocalityName>Washington</LocalityName>
                            </Locality>
                        </SubAdministrativeArea>
                    </AdministrativeArea>
                </Country>
            </AddressDetails>
            <ExtendedData>
                <LatLonBox north="38.9645516" south="38.8256040" east="-76.9083064" west="-77.1644252" />
            </ExtendedData>
            <Point>
                <coordinates>-77.0363658,38.8951118,0</coordinates>
            </Point>
        </Placemark>
    </Response>
</kml>

Затем вы можете использовать такую ​​функцию, как SimpleXML или DOMDocument, для анализа данных. Если вы просто хотите отобразить координаты, поддерживаемые тегом, просто используйте этот код:

$xml = simplexml_load_string(file_get_contents('http://maps.google.com/maps/geo?output=json&oe=utf8&sensor=false&hl=de&q='.urlencode($address)));
echo (string)$xml->Placemark->Point->coordinates;

Если вы хотите, чтобы одиночные координаты использовали данные в теге, например ::

$coordinates = explode(',', $xml->Placemark->Point->coordinates);
echo $coordinates[0];
echo $coordinates[1];

Надеюсь, это то, что вы ищете.

0 голосов
/ 11 июля 2010

См. http://www.maxmind.com/app/geoip_resources и там внизу разделы "MySQL".Они помогут.

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