<meta http-equiv=content-type content="text/html; charset=UTF-8">
<pre>
GEOBAZA
ÐодÑÐ»Ñ GEOBAZA пÑедназнаÑен Ð´Ð»Ñ Ð±ÑÑÑÑого полÑÑÐµÐ½Ð¸Ñ Ð³ÐµÐ¾Ð³ÑаÑиÑеÑкиÑ
даннÑÑ
, ÑакиÑ
как ÑÑÑана, облаÑÑÑ Ð¸Ð»Ð¸ ÑÑаÑ, гоÑод, а Ñакже геогÑаÑиÑеÑкиÑ
кооÑдинаÑ, по коÑоÑÑм
заÑегиÑÑÑиÑован IP-адÑеÑ. ÐнÑоÑмаÑÐ¸Ñ Ð¿ÑедоÑÑавлÑеÑÑÑ Ð½Ð° ÑÑеÑ
ÑзÑкаÑ
: ÑÑÑÑком,
английÑком, а Ñакже ÑзÑке ÑÑÑанÑ, в коÑоÑой заÑегиÑÑÑиÑован IP-адÑеÑ.
РнекоÑоÑÑÑ
ÑлÑÑаÑÑ
ÑоÑное опÑеделение геогÑаÑиÑеÑкой пÑивÑзки IP-адÑеÑа
невозможно. ÐапÑимеÑ, полÑзоваÑÐµÐ»Ñ Ð²ÑÑ
Ð¾Ð´Ð¸Ñ Ð² инÑеÑÐ½ÐµÑ ÑеÑез GPRS ÐоÑковÑкого
опеÑаÑоÑа ÑоÑовой ÑвÑзи, наÑ
одÑÑÑ Ð¿Ñи ÑÑом в ÐеÑеÑбÑÑге.
ÐодÑÐ»Ñ Geobaza5 ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· Ñайлов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
: "geobaza.dat", "geobaza.csv",
и неÑколÑкиÑ
модÑлей API на ÑзÑкаÑ
: PHP, Perl, C. ÐодÑобнÑе пÑимеÑÑ Ð¸ÑполÑзованиÑ
API можно поÑмоÑÑеÑÑ Ð² пÑимеÑаÑ
на вÑÑеÑказаннÑÑ
ÑзÑкаÑ
пÑогÑаммиÑованиÑ.
Файл "geobaza.dat" ÑвлÑеÑÑÑ Ð±Ð¸Ð½Ð°ÑнÑм Ñайлом и иÑполÑзÑеÑÑÑ Ð² клаÑÑе Geobaza.
Файл "geobaza.csv" в ÑекÑÑовом виде пÑедоÑÑавлÑÐµÑ Ð¸Ð½ÑоÑмаÑиÑ, Ñ
ÑанÑÑÑÑÑÑ Ð²
бинаÑном Ñайле "geobaza.dat". РклаÑÑе Geobaza не иÑполÑзÑеÑÑÑ, но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ
полезен полÑзоваÑелÑм. ФоÑÐ¼Ð°Ñ Ð·Ð°Ð¿Ð¸Ñей данного Ñайла:
* IP наÑала диапазона в ÑекÑÑовом виде
* IP конÑа диапазона в ÑекÑÑовом виде
* IP наÑала диапазона в виде 32-биÑного Ñелого
* Ð Ð°Ð·Ð¼ÐµÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (конеÑ-наÑало+1)
* TLD ÑÑÑанÑ
* ÐеÑаÑÑ
иÑеÑкий иденÑиÑикаÑÐ¾Ñ Ð³ÐµÐ¾Ð³ÑаÑиÑеÑкого обÑекÑа (гоÑод, Ñегион, ÑÑÑана)
ÐаннÑй иденÑиÑикаÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¼ÐµÐ½ÑÑÑÑÑ Ð¾Ñ Ð²ÐµÑÑии к веÑÑии! "ÐеÑÑкаÑ" пÑивÑзка
к Ð½ÐµÐ¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð² поÑледÑÑвии вÑзваÑÑ Ð½ÐµÑдобÑÑва.
* ÐодÑобное опиÑание геогÑаÑиÑеÑкого обÑекÑа в ÑоÑмаÑе JSON.
GEOBAZA Lite
GEOBAZA Lite пÑедоÑÑавлÑÐµÑ ÑÐ¾Ñ Ð¶Ðµ ÑÑнкÑионал, ÑÑо и Geobaza, за одним иÑклÑÑением:
ÑоÑноÑÑÑ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð³ÐµÐ¾Ð³ÑаÑиÑеÑкого обÑекÑа огÑаниÑиваеÑÑÑ Ð´Ð¾ Ñегиона. Ðез
огÑаниÑений опÑеделÑÑÑÑÑ Ð»Ð¸ÑÑ Ð³Ð¾Ñода в ÐовгоÑодÑкой облаÑÑи.
ÐÐ»Ñ Ð¿ÑовеÑки коÑÑекÑноÑÑи внедÑÐµÐ½Ð¸Ñ Geobaza можно пÑовеÑиÑÑ Ð¾Ð´Ð¸Ð½ из адÑеÑов,
пÑинадлежаÑиÑ
гоÑодам в ÐовгоÑодÑкой облаÑÑи, напÑимеÑ, 85.142.15.255.
PHP API
Ð ÑлÑÑае, еÑли PHP ÑобÑан без вÑÑÑоенной поддеÑжки ÑоÑмаÑа JSON, можно иÑполÑзоваÑÑ
наÑи вклÑÑаемÑй Ñайл Ð´Ð»Ñ ÑабоÑÑ Ñ JSON: include "json-dirty.php". Ðднако, ÑÑо ÑвлÑеÑÑÑ
"гÑÑзнÑм" Ñ
аком, поÑÑÐ¾Ð¼Ñ ÑекомендÑем пеÑеÑобÑаÑÑ PHP Ð´Ð»Ñ Ð²ÑÑÑоенной поддеÑжки JSON.
ÐÐÐСС Geobaza
ÐеÑод is_valid() - возвÑаÑÐ°ÐµÑ true, еÑли ÑкземплÑÑ ÐºÐ»Ð°ÑÑа Geobaza ÑÑпеÑно
загÑÑзил ÑÑебÑемÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
и false в пÑоÑивном ÑлÑÑае. ÐÑли ÑкземплÑÑ Ð½Ðµ Ñмог
загÑÑзиÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, Ñо нижеÑказаннÑе меÑÐ¾Ð´Ñ Ð±ÑдÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ false.
ÐеÑод get_error() - возвÑаÑÐ°ÐµÑ ÑекÑÑовое знаÑение оÑибки, еÑли ÑкземплÑÑ Ð±Ñл
Ñоздан Ñ Ð¾Ñибкой.
ÐеÑод get_headers() - возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив ÑлÑжебнÑÑ
заголовков Ñайла даннÑÑ
:
'api_version' => 5
'build_date' => даÑа и вÑÐµÐ¼Ñ ÑбоÑки Ñайла
'build_timestamp' => даÑа и вÑÐµÐ¼Ñ ÑбоÑки Ñайла, ÑекÑÐ½Ð´Ñ Ñ 1970 года.
ÐеÑод lookup($ip4) - возвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив.
* Ð ÑлÑÑае, еÑли адÑÐµÑ ÑооÑвеÑÑÑвÑÐµÑ ÑпеÑиалÑÐ½Ð¾Ð¼Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ, Ñо
array('special'=>[ ÐпиÑание ÑпеÑиалÑного диапазона ])
* ÐÑли адÑÐµÑ ÑооÑвеÑÑÑвÑÐµÑ Ð²Ñделенной ÑеÑи, Ñо array('items'=>array of items)
где array of items - ÑпоÑÑдоÑеннÑй маÑÑив опиÑаний геогÑаÑиÑеÑкого обÑекÑа.
ÐеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ - наиболее деÑализиÑованное опиÑание обÑекÑа (гоÑод).
ÐоÑледний ÑÐ»ÐµÐ¼ÐµÐ½Ñ - обÑÑно ÑÑÑана.
ÐаждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑвлÑеÑÑÑ Ð°ÑÑоÑиаÑивнÑм маÑÑивом:
'id' => иеÑаÑÑ
иÑеÑкий иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа;
'type' => Ñип (world, country, region, city);
'lang' => гоÑÑдаÑÑÑвеннÑй ÑзÑк;
'lat' => ÑиÑоÑа;
'lon' => долгоÑа;
'population' => ÑиÑленноÑÑÑ Ð½Ð°ÑелениÑ;
'name' => аÑÑоÑиаÑивнÑй маÑÑив знаÑений 'ÑзÑк'=>'название'. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ обÑекÑа
поддеÑживаÑÑÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ на ÑÑÑÑком (RU), английÑком (EN) и наÑионалÑном ÑзÑке,
еÑли он оÑлиÑен Ð¾Ñ RU и EN;
'name_official' => Ñо же, ÑÑо и 'name', но вмеÑÑо обÑеÑпоÑÑебиÑелÑнÑÑ
названий
(РоÑÑиÑ, ÐелаÑÑÑÑ) иÑполÑзÑÑÑÑÑ Ð¾ÑиÑиалÑнÑе (РоÑÑийÑÐºÐ°Ñ Ð¤ÐµÐ´ÐµÑаÑиÑ, РеÑпÑблика
ÐелаÑÑÑÑ).
ÐÑе даннÑе, возвÑаÑаемÑе меÑодом, пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² кодиÑовке UTF-8.
PERL API
ÐдеологиÑеÑки Ñо же Ñамое, ÑÑо и PHP API. РазлиÑÐ¸Ñ ÑолÑко в ÑинÑакÑиÑе ÑзÑков.
C API
ÐÑе ÑÑнкÑии возвÑаÑаÑÑ 0 пÑи ÑÑпеÑном завеÑÑении и не 0 - пÑи неÑдаÑе.
int geobaza_open(GEOBAZA *geobaza, char *filename)
ÐÑкÑÑÐ²Ð°ÐµÑ Ð½Ð° ÑÑение бинаÑнÑй Ñайл и иниÑиализиÑÑÐµÑ ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
geobaza.
ÐаннÑÑ ÑÑÑÑкÑÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ иÑполÑзоваÑÑ Ð´Ð»Ñ Ð½ÐµÐ¾Ð³ÑаниÑенного ÑиÑла поÑледÑÑÑиÑ
вÑзовов lookup.
int geobaza_close(GEOBAZA *geobaza)
ÐакÑÑÐ²Ð°ÐµÑ ÑÑÑÑкÑÑÑÑ geobaza.
int geobaza_lookup(GEOBAZA *geobaza, u_int32_t ipv4, GEOBAZA_PLACE **ref_to_place)
ÐÑполнÑÐµÑ Ð¿Ð¾Ð¸Ñк ip-адÑеÑа в ÑоÑмаÑе 32-биÑного Ñелого по ÑÑÑÑкÑÑÑе geobaza. ÐÐ»Ñ Ñ
ÑанениÑ
ÑезÑлÑÑаÑа пеÑедаеÑÑÑ ÑÑÑлка на неиниÑиализиÑованнÑй ÑказаÑÐµÐ»Ñ ref_to_place.
Ð ÑлÑÑае ÑÑпеÑного поиÑка ÑÑнкÑÐ¸Ñ Ñама вÑÐ´ÐµÐ»Ð¸Ñ Ð¿Ð°Ð¼ÑÑÑ Ð¿Ð¾Ð´ ÑезÑлÑÑаÑ.
УказаÑÐµÐ»Ñ ref_to_place бÑÐ´ÐµÑ ÑÑÑлаÑÑÑÑ Ð½Ð° ÑÑÑÑкÑÑÑÑ, опиÑÑваÑÑÑÑ Ð¼Ð°ÐºÑималÑно возможнÑй
ÑаÑпознаннÑй геогÑаÑиÑеÑкий обÑÐµÐºÑ (гоÑод). ÐÑли знаÑение Ð¿Ð¾Ð»Ñ parent не Ñавно null, Ñо
оно ÑказÑÐ²Ð°ÐµÑ Ð±Ð¾Ð»ÐµÐµ вÑÑокий обÑекÑ, ÑледÑÑÑий в иеÑаÑÑ
ии (Ñегион, ÑÑÑана).
int geobaza_free_result(GEOBAZA_PLACE **ref_to_place)
ÐÑÐ²Ð¾Ð±Ð¾Ð¶Ð´Ð°ÐµÑ Ð²Ñе динамиÑеÑки вÑделеннÑе под ÑезÑлÑÑÐ°Ñ Ð¾Ð±Ð»Ð°ÑÑи памÑÑи.
int geobaza_aton(char *ipv4_as_text, u_int32_t *ipv4_as_32bit)
ÐÑеобÑазÑÐµÑ ip-адÑÐµÑ Ð¸Ð· ÑекÑÑового вида aaa.bbb.ccc.ddd в 32-биÑное беззнаковое Ñелое.