标签: geojson

将SQLGeography多边形重新格式化为JSON

我正在构建一个以JSON格式提供地理边界数据的Web服务.

地理数据使用表中的地理类型存储在SQL Server 2008 R2数据库中.我使用[ColumnName].ToString()方法将多边形数据作为文本返回.

示例输出:

POLYGON ((-6.1646509904325884 56.435153006374627, ... -6.1606079906751 56.4338050060666))

MULTIPOLYGON (((-6.1646509904325884 56.435153006374627 0 0, ... -6.1606079906751 56.4338050060666 0 0)))
Run Code Online (Sandbox Code Playgroud)

地理定义可以采用定义多边形的纬度/长度对数组的形式,或者在多个定义的情况下,采用数组或多边形(多边形).

我有以下正则表达式,根据输出将输出转换为多维数组中包含的JSON对象.

Regex latlngMatch = new Regex(@"(-?[0-9]{1}\.\d*)\s(\d{2}.\d*)(?:\s0\s0,?)?", RegexOptions.Compiled);

    private string ConvertPolysToJson(string polysIn)
    {
        return this.latlngMatch.Replace(polysIn.Remove(0, polysIn.IndexOf("(")) // remove POLYGON or MULTIPOLYGON
                                               .Replace("(", "[")  // convert to JSON array syntax
                                               .Replace(")", "]"), // same as above
                                               "{lng:$1,lat:$2},"); // reformat lat/lng pairs to JSON objects
    }
Run Code Online (Sandbox Code Playgroud)

这实际上工作得很好,并且在响应操作调用时动态地将DB输出转换为JSON.

然而,我不是正则表达式大师,而且String.Replace()对我来说效率似乎也低效.

有没有人对此表现有任何建议/意见?

c# json geojson sqlgeography wkt

8
推荐指数
3
解决办法
7087
查看次数

JS传单:如何将(Geo-)json ID传递给click事件?

我的django Web应用程序应该执行以下操作:将Geojson对象传递给视图,使用传单映射点,并在用户单击点标记时显示一些其他信息.我对js不是那么熟悉所以我被绑定了正确的数据到click事件.这是一个geojson对象示例.如何通过我的活动访问"id" click

var geojsonFeature = {'geometry':
                          {'type': 'MultiPoint', 
                          'coordinates': [[4.939, 52.33], [4.9409, 52.33]]
                          }, 
                     'type': 'Feature', 
                     'properties': 
                        {'id': '52','popupContent': 'id=52'}
                     };
Run Code Online (Sandbox Code Playgroud)

将geojson对象添加到地图中..

var gj = L.geoJson(geojsonFeature, {
    pointToLayer: function (feature, latlng) {
    return L.circleMarker(latlng, geojsonMarkerOptions);
    }}).addTo(map);
Run Code Online (Sandbox Code Playgroud)

并且 - on()点击....

gj.on('click', function(evt) {
   alert(id) // well, this is where I need help
});
Run Code Online (Sandbox Code Playgroud)

注意:我不想使用类似的东西,bindPopup(feature.properties.popupContent)因为我想打开一个新窗口,使用数据库中的一些额外数据调用不同的django视图.

javascript onclick geojson leaflet

8
推荐指数
1
解决办法
8788
查看次数

打开/关闭图层时图层顺序的变化

我有两个geoJson图层被加载 - 这两个图层是用于测试目的的相同数据,但是从两个不同的json文件中提取.当我在图层控制器中打开和关闭图层时,图层的绘制顺序会发生变化.

任何想法为什么会这样?

我已将我的代码放入JSFiddle:http://jsfiddle.net/lprashad/ph5y9/10/,JS如下:

//styling for watersheds_copy
var Orange = {
    "color": "#ff7800",
        "weight": 5,
        "opacity": 0.65
};

var Water_Orange = L.geoJson(watersheds_copy, {
    style: Orange
});

Water_Orange.addData(watersheds_copy);

//these are blue
var Water_blue = L.geoJson(watersheds, {});
Water_blue.addData(watersheds);

//This sets the inital order - last in layer list being on top. Except minimal   - tile layer is always on bottom
var map = L.map('map', {
    center: [41.609, -74.028],
    zoom: 8,
    layers: [minimal, Water_Orange, Water_blue]
});

var baseLayers …
Run Code Online (Sandbox Code Playgroud)

geojson leaflet

8
推荐指数
1
解决办法
2010
查看次数

使用Python构建GeoJSON

我想生成具有可变数量多边形的geoJSON.2个多边形的示例:

{
    "type": "FeatureCollection", 
    "features": [
      {"geometry": {
          "type": "GeometryCollection", 
          "geometries": [
              {
                  "type": "Polygon", 
                  "coordinates": 
                      [[11.0878902207, 45.1602390564],
                       [0.8251953125, 41.0986328125], 
                       [7.63671875, 48.96484375], 
                       [15.01953125, 48.1298828125]]
              }, 
              {
                  "type": "Polygon", 
                  "coordinates": 
                      [[11.0878902207, 45.1602390564], 
                       [14.931640625, 40.9228515625], 
                       [11.0878902207, 45.1602390564]]
              }
          ]
      }, 
      "type": "Feature", 
      "properties": {}}
    ]
}
Run Code Online (Sandbox Code Playgroud)

我有一个函数,它给我每个多边形的坐标列表,所以我可以创建一个多边形列表,所以我能够构建geoJSON用for循环迭代它.

问题是我没有看到如何轻松地做到这一点(我想例如将列表作为字符串返回,但将geoJSON构建为字符串看起来是个坏主意).

我被建议这个非常pythonic的想法:

geo_json = [ {"type": "Feature",,
              "geometry": {
                  "type": "Point",
                  "coordinates": [lon, lat] }}
              for lon, lat in zip(ListOfLong,ListOfLat) ] 
Run Code Online (Sandbox Code Playgroud)

但由于我添加了可变数量的多边形而不是点列表,因此这种解决方案似乎不合适.或者至少我不知道如何适应它.

我可以把它建成一个字符串,但我想以更聪明的方式做到这一点.任何的想法?

python json dictionary geojson

8
推荐指数
3
解决办法
2万
查看次数

从MySql在php中创建GeoJson以与MapBox javascript API一起使用

我想要做的很简单; 使用我的PHP代码从Mysql表中获取marker的数据,将其转换为geoJson(由MapBox使用),将geoJson发送到javascript,然后将这些标记填充到我的地图中.

我一直在仔细阅读以下两个链接,显然包含了我需要解决的所有信息,但我不确定我缺少什么.

在这里,您可以看到如何从MapBox中的geoJson填充标记的示例;

在这里,您可以看到如何从MySql表创建geoJson;

我的sql表看起来像这样,这里是创建代码加上一些虚拟数据;

-- phpMyAdmin SQL Dump
-- version 4.0.4.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jul 21, 2013 at 03:26 PM
-- Server version: 5.5.32-cll-lve
-- PHP Version: 5.5.0

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Database: `pgmq`
--

-- --------------------------------------------------------

--
-- Table structure for table `mapa`
--

CREATE TABLE IF NOT EXISTS `mapa` (
  `contrato` int(11) NOT NULL,
  `name` varchar(60) NOT NULL,
  `address` varchar(80) NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

javascript php mysql geojson mapbox

8
推荐指数
1
解决办法
3万
查看次数

Rails 4强参数嵌套对象中的嵌套数组

这个问题部分回答了我的问题.作者使用类似的json结构..

我的问题:如何在嵌套对象中允许嵌套数组?我有一个Contribution模特has_many Features.我正在尝试创建GeoJSON多边形.在coordinates保持为空

这是我发送的JSON

{
  "contribution": {
    "features_attributes": [
      {
        "geojson": {
          "type": "Feature",
          "properties": {},
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  7.263336181640625,
                  52.07190953840937
                ],
                [
                  7.263336181640625,
                  52.135173926548894
                ],
                [
                  7.404785156249999,
                  52.135173926548894
                ],
                [
                  7.404785156249999,
                  52.07190953840937
                ],
                [
                  7.263336181640625,
                  52.07190953840937
                ]
              ]
            ]
          }
        }
      }
    ],
    "title": "324",
    "description": "23"
  }
}
Run Code Online (Sandbox Code Playgroud)

目前我的许可证代码如下:

params.require(:contribution).permit(
  :title,
  :description,
  features_attributes: [
    { geojson: [
        :type,
        { geometry: [
            :type,
            #{ coordinates: [] } …
Run Code Online (Sandbox Code Playgroud)

json ruby-on-rails polygon geojson strong-parameters

8
推荐指数
1
解决办法
3376
查看次数

什么意思是"Generic type'Feature <T>'在Typescript中需要1个类型的参数?"

我尝试在打字稿中使用GeoJson,但编译器会为这两个变量抛出错误: Generic type 'Feature<T>' requires 1 type argument(s)

  const pos = <GeoJSON.Feature>{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [0, 1]
    }
  };

  const oldPos = <GeoJSON.Feature>{
    "type": "Feature",
    "geometry": {
      "type": "Point",
      "coordinates": [2, 4]
    }
  };
Run Code Online (Sandbox Code Playgroud)

这应该是什么意思?

generics geojson typescript

8
推荐指数
1
解决办法
1万
查看次数

设置叶片等值区域缺失值的颜色

我有一个包含一些国家和变量的数据框,我想folium用整个世界的geojson文件生成一个等值区域图.我folium在将色标上的最大值分配给我的数据帧中不存在的国家时遇到问题.以下最低限度:

import random
import pandas as pd
import folium
import json

map_data = pd.DataFrame({
    'A3':['POL', 'CZE', 'SVK', 'HUN', 'AUT'],
    'value':random.sample(range(10), 5)
})

m = folium.Map(
    location = [50, 15], 
    zoom_start = 4
)

m.choropleth(
    geo_data = 'https://github.com/simonepri/geo-maps/releases/download/v0.6.0/countries-land-10km.geo.json',
    data = map_data,
    columns = ['A3', 'value'],
    key_on = 'feature.properties.A3',
    fill_color = 'YlOrRd'
)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我的问题如下:如何判断folium丢失的国家(即存在于json文件中但未存在的那些)中的特定颜色(例如,灰色或透明map_data),而不是将它们作为给定变量的最大值着色(这是一种奇怪的行为)?

python geojson pandas leaflet folium

8
推荐指数
2
解决办法
2462
查看次数

你如何将 GeoJsonTooltip 添加到 folium.Choropleth 类中的 folium?

我有两个 choropleth 层,我想在其中添加 GeoJsonTooltip,但我一直收到错误 TypeError: __init__() missing 1 required positional argument: 'text'

我目前的代码如下。

import folium
import pandas as pd
import json

df_theft = pd.read_csv('PA_Theft.csv')
df_assualt = pd.read_csv('PA_Assualt.csv')

theft_json = json.load(open('theft_geojson.json'))
assualt_json = json.load(open('assualt_geojson.json'))

m = folium.Map(location=[41.20, -77.50], tiles="cartodbdark_matter", zoom_start=8.3)

theft = folium.Choropleth(
    geo_data=theft_json,
    data=df_theft,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='OrRd',
    fill_opacity=0.9,
    nan_fill_color='#ffffff',
    nan_fill_opacity=0.9,
    legend_name='Incident rate per 100,000 people',
    highlight=True,
    name='Theft'
).add_to(m)

folium.GeoJson(
    theft_json,
    tooltip=folium.features.Tooltip(fields=['feature.properties.county_name'])
).add_to(theft)

assualt = folium.Choropleth(
    geo_data=assualt_json,
    data=df_assualt,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='OrRd',
    fill_opacity=0.9,
    nan_fill_color='#ffffff',
    nan_fill_opacity=0.9,
    legend_name='Incident rate per 100,000 people', …
Run Code Online (Sandbox Code Playgroud)

python json geojson folium

8
推荐指数
1
解决办法
6217
查看次数

GDAL、ogr2ogr“找不到 proj.db”错误

我试图从自然地球的世界 shp 文件中提取某些国家/地区。

我目前使用的是 windows 10,所以我安装了 python 3.7,gdal 来使用 ogr2ogr。

我在命令中输入了以下代码来提取韩国

ogr2ogr -f GeoJSON -where "geonunit='韩国'" korea-geo.json ne_10m_admin_1_states_provinces.shp

但是出现了以下错误。

错误 1:PROJ:proj_create_from_wkt:找不到 proj.db

错误 1:PROJ:proj_identify:找不到 proj.db

我已经为 Gdal 设置了环境变量..

C:\Program Files\GDAL\gdal-data

C:\Program Files\GDAL\gdalplugins

请指导我解决这个问题。

shapefile gdal geojson ogr2ogr

8
推荐指数
4
解决办法
1万
查看次数