0

是否有任何地方可以获得 SQL 来创建加载条目的国家/地区表和城市表。如果城市与他们的国家相连,并且城市有坐标,那就太好了。这些数据将用于填充选择选项并将标记绘制到 GoogleMap 上。

4

2 回答 2

0

很抱歉回答了一个老问题,但我来到这里寻找相同的信息,但似乎在任何地方都没有得到清楚的回答,所以就这样吧。

来自 geonames 的“allCountries”数据非常广泛(轻描淡写),对于大多数应用程序来说都是多余的。'cities1000' 更有意义,并且规模更易于管理。只要您对服务器具有 SSH 访问权限,将其导入 MySQL 就非常简单。

  1. 下载文件 wget http://download.geonames.org/export/dump/cities1000.zip

  2. 提取它unzip cities1000.zip

  3. 运行以下查询(不要忘记将 MyDatabase 替换为您的数据库名称,并且表的名称必须与文件的名称匹配)

.

CREATE TABLE IF NOT EXISTS `MyDatabase`.`cities1000` (
  `geo_id`               INT(11) UNSIGNED NOT NULL PRIMARY KEY,
  `geo_name`             VARCHAR(200) NOT NULL DEFAULT '',
  `geo_ansiname`         VARCHAR(200) NOT NULL DEFAULT '',
  `geo_alternate_names`  VARCHAR(2000) NOT NULL DEFAULT '',
  `geo_latitude`         DOUBLE PRECISION(11,7) NOT NULL DEFAULT '0',
  `geo_longitude`        DOUBLE PRECISION(11,7) NOT NULL DEFAULT '0',
  `geo_feature_class`    CHAR(1) ,
  `geo_feature_code`     VARCHAR(10) ,
  `geo_country_code`     CHAR(2),
  `geo_country_code2`    VARCHAR(60),
  `geo_admin1_code`      VARCHAR(20) DEFAULT '',
  `geo_admin2_code`      VARCHAR(80) DEFAULT '',
  `geo_admin3_code`      VARCHAR(20) DEFAULT '',
  `geo_admin4_code`      VARCHAR(20) DEFAULT '',
  `geo_population`       BIGINT(11) DEFAULT '0',
  `geo_elevation`        INT(11) DEFAULT '0',
  `geo_gtopo30`          INT(11) DEFAULT '0',
  `geo_timezone`         VARCHAR(40),
  `geo_mod_date`         DATE DEFAULT '0000-00-00'

) CHARACTER SET utf8 ;
  1. 将下载的文件导入数据库(您需要更改命令以匹配您的服务器配置)

mysqlimport -h localhost -u MySQL-USER -p --fields-terminated-by='\t' --lines-terminated-by='\n' --local MyDatabase /path-to/cities1000.txt

  1. 非常重要:为相关字段添加索引

而已!仍然非常全面的全球城市列表,没有“allCountries”文件中的所有“垃圾”。

数据的主要问题是,如果您想要国家,您将不得不自己构建该表并添加将它们链接到城市的外键,但是第二个数据源(在 XML 中可用)和一些聪明的查询将做的伎俩。

于 2013-02-19T22:11:48.040 回答
0

我使用了 geonames.org 的 txt 格式数据库。

这里是关于如何下载txt 文件的描述,这里是关于如何导入 MySql的描述。

我把它放到我的 mysql 数据库中没有真正的问题,只要记住给你的表添加索引,因为其中一些会很大!

于 2011-09-17T21:27:36.287 回答