从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON

Posted

技术标签:

【中文标题】从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON【英文标题】:Building a JSON from a database query of country, state, city and each cities latitude/longitude 【发布时间】:2020-05-16 22:04:00 【问题描述】:

我有一张表格,上面有国家、州、城市、城市的纬度/经度。我正在尝试构建一个 json 字符串,如下所示。


  "country": "usa",
  "states": [
    
      "name": "Alabama",
      "state_code": "AL",
      "cities": [
        
          "name": "Abbeville",
          "latitude": "31.57184000",
          "longitude": "-85.25049000"
        ,
        
          "name": "Adamsville",
          "latitude": "33.60094000",
          "longitude": "-86.95611000"
        
      ]
    ,
    
      "name": "Alaska",
      "state_code": "AK",
      "cities": [
        
          "name": "Akutan",
          "latitude": "54.13350000",
          "longitude": "-165.77686000"
        ,
        
          "name": "Aleutians East Borough",
          "latitude": "54.85000000",
          "longitude": "-163.41667000"
        
      ]
    
  ]

数据库查询结果在一个数组中:jsonData。我有那个国家的代码。不知道如何添加一个不存在的州和一个城市,如果它不存在,城市的纬度和经度(我有的部分???)

let jsonData1 = [];
for (let item of jsonData) 
  if(countryExists(jsonData1, item['COUNTRY'])) 
    ??
  
  else 
    jsonData1.push( country: item['COUNTRY']);
  



function countryExists (JSON, country) 
  var hasMatch = false;

  for (var index = 0; index < JSON.length; ++index) 
      var item  = JSON[index];
      if(item.country === country) 
        hasMatch = true;
        break;
      
  
  return hasMatch;

【问题讨论】:

【参考方案1】:

假设您想坚持使用您选择的架构,您可以在添加没有州的国家/地区时,将州名的值设置为默认值,例如none,您也可以对 latitudelongitude 执行相同的操作。

但是,我建议您重新考虑数据架构。

【讨论】:

我希望它采用在另一个应用程序中使用循环更易于阅读的格式。这就是我选择该架构的原因。你建议什么架构? @RaviM 问题在于您的架构是 citiesstates 内,而世界上大多数国家/地区都没有州...... 谢谢。正如你所建议的,如果有没有国家的国家,我可以添加一个名为 none 的国家。我仍然需要帮助来弄清楚如何在添加之前检查一个国家/地区内是否存在一个州,以及在添加之前如何检查一个国家/州内是否存在一个城市。我尝试了一些组合,但似乎无法使其发挥作用。

以上是关于从国家、州、城市和每个城市纬度/经度的数据库查询构建 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?

如何使用 bing 将城市/州转换为地理位置(纬度/经度)?

SQL查询位置半径内的总点数

将纬度/经度转换为美国州

一个州的人口加权中心

使用纬度和经度列从 MySql 表中获取国家/城市明智的数据