OpenGeoDb上的半径搜索

时间:2011-07-22 08:54:03

标签: mysql

我正在努力创建一个数据库,其中包含德国境内所有可能的地理坐标和邮政编码。我正在使用OpenGeoDb项目。我已经设置了数据库,现在我正在尝试将Radius搜索合并到其中。 (German Language) OpenGeoDb wiki中提供了执行半径搜索的说明。我正在尝试执行给定的查询,但它给了我一个错误。

首先,我创建一个表,将数据库中所需的数据导入到:

CREATE TABLE `zip_coordinates` (
zc_id INT NOT NULL auto_increment PRIMARY KEY,
  zc_loc_id INT NOT NULL ,
    zc_zip VARCHAR( 10 ) NOT NULL ,
    zc_location_name VARCHAR( 255 ) NOT NULL ,
    zc_lat DOUBLE NOT NULL ,
    zc_lon DOUBLE NOT NULL
)

然后将数据导入表zip_coordinate我使用以下查询:

INSERT INTO zip_coordinates (zc_loc_id, zc_zip, zc_location_name, zc_lat, zc_lon)
SELECT gl.loc_id, plz.text_val, name.text_val, coord.lat, coord.lon
FROM geodb_textdata plz
LEFT JOIN geodb_textdata name ON name.loc_id = plz.loc_id
LEFT JOIN geodb_locations gl ON gl.loc_id = plz.loc_id
LEFT JOIN geodb_hierarchies as tier ON plz.loc_id = tier.loc_id 
LEFT JOIN geodb_coordinates coord ON plz.loc_id = coord.loc_id
WHERE plz.text_type =500300000
  AND name.text_type =500100000
  AND tier.id_lvl1 = 104
  AND tier.id_lvl2 = 105 
  AND name.text_locale = "de" 
  AND (
        gl.loc_type =100600000
        OR 
        gl.loc_type =100700000
);

当我尝试执行zc_lat不能NULL的上述查询时,我收到错误消息。 我还没有找到解决这个问题的方法。非常感谢您的帮助或建议。

1 个答案:

答案 0 :(得分:1)

昨天遇到同样的问题...... 当我删除包含“等级”的条件时,它对我有用 因为这指的是一张空的桌子....