- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正处于重建几乎一年前 build 的东西的阵痛中(不要问旧版本去了哪里——这很尴尬)。
核心功能使用 $.getJSON
(ajax
-ish) 在运行 PHP 脚本的 javascript 中调用,该脚本运行 PostgreSQL 查询,该查询构建 JSON 对象并返回它。 (暂停呼吸)。
问题在于 PostgreSQL 在轮到它大放异彩时会吐出什么。
我知道 build_json_object()
和 build_json_array()
PostgreSQL 9.4+ 中的功能,但是必须在其上运行的数据库之一尚未从 9.2 升级,我在下个月左右没有时间这样做。
现在我使用row_to_json()
(以及几何图形上的 ST_AsGeoJSON()
)来构建我的 GeoJSON 集合,该集合通过回调返回到客户端。
从 this very nice post 得到我的启示(并且保持在该帖子查询结构的非常小的 epsilon 内),我运行以下查询:
select row_to_json(fc)
from (SELECT 'FeatureCollection' As type,
array_to_json(array_agg(f)) As features
from (SELECT 'Feature' as type,
row_to_json((select l from (select $vars) as l)) as properties,
ST_AsGeoJSON(ST_Transform(lg.g1,4326)) as geometry
from $source_table as lg
where g1 && ST_Transform(ST_SetSRID(ST_MakeEnvelope($bounds),4326),4283)
) as f ) as fc;
$vars
、
$source_table
和
$bounds
由 PHP 从
POST
变量提供)。
fetchAll(PDO::FETCH_ASSOC)
该查询到
$result
, 和
json_encode($result[0]["row_to_json"])
, 返回给 javascript 的对象是一个可以是
JSON.parse()
的对象'd 给出预期(一个
Object
和一个
FeatureCollection
又包含一堆
Feature
s,其中一个是
geometry
)。
Feature
好像
{"type":"Feature","geometry":"{\\"type\\":\\"Polygon\\",
\\"coordinates\\":"[[[146.885447408,-36.143199088],
[146.884964384,-36.143136232],
... etc
]]"
}",
"properties":{"address_pfi":"126546461",
"address":"blah blah",
...etc }
}
{type, coordinates}
的属性(在非 JSON 意义上) :“几何”位看起来像
"geometry":"{stuff}"
"geometry":{stuff}
$.getJSON
返回对象,我
.replace(/"{/g, '{')
和 .replace(/}"/g, '}')
和 .replace(/\\/g, '')
,然后是 row_to_json()
阶段:它看到“几何”的属性集,并将其与“属性”的属性集区别对待——它(错误地)引用-转义“几何”(在斜线转义所有双引号之后)一个但是(正确)将“属性”保留为原样。
$.getJSON
在 Google Map 中的“空闲”触发的监听器下运行,源表、感兴趣的变量和缩放(确定
$bounds
)是用户确定的。
最佳答案
看来你错过了 json 的类型转换。
它应该是
ST_AsGeoJSON(ST_Transform(lg.g1,4326))::json
关于javascript - PostgreSQL GeoJSON <- php -> JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408633/
我正在尝试按照此链接 http://bost.ocks.org/mike/map/ 上的教程进行操作到目前为止,我已经完全按照列出的每条说明进行操作,但是当我尝试运行“#Converting Data
何我可以反转一个国家的 GeoJson,以便它将国家定义为世界地图多边形中的一个洞?我需要这个来在 OpenLayers 5.3 中创建 GeoJson VectorLayer 的蒙版。 最佳答案 在
我在构建 GeoJSON 并将其放在 map 上的传单代码方面遇到了一些麻烦。 GeoJSON 是根据服务的 XML 响应构建的。 错误是 无效的 GeoJSON 对象。 throw new Erro
我有一个 geojson 表示插值天气数据的等高线层。某些轮廓在更高的缩放级别消失,如以下屏幕抓图所示。 将多边形作为图层添加到 Mapbox 时,使用以下代码: map.addSource('min
我有一些地理边界 have a GeoJSON endpoint for . 我还有一些变量存储在单独的 GeoJSON endpoint 中它没有坐标,但确实有我想稍后使用 D3 对 map 进行主
我是 MapBox GL Js 的新手,我想通过 https 调用一个大的 GeoJSON 文件并将其显示到 map 上。 我认为调用 vector Tile 是最好的方法,我找到了一些教程,展示了如
我已经使用 SQL 到 geoJSON 生成了我的数据库的一些兴趣点。 地理数据: { "FeatureCollection" : [ { "g
创建一张与此处找到的 map 类似的 map : https://www.plantmaps.com/interactive-california-2012-usda-plant-zone-hardi
我对 ammCharts 比较陌生,这也是我第一次尝试创建 geoJSON 文件。 以下是我的geoJson文件: GeoJSON file 这就是我要实现的目标: example 当我加载我的 ge
我有几个 geojson 层,并且我使用组将其分层。我使用此处找到的 Mike 答案将 map 集中在给定的 geojson 文件上 -> Center a map in d3 given a geo
环回新手,但设置我的第一个基于节点的 RestAPI 很有趣。我能够创建模型并在数据存储中创建关联的表。我的模型需要具有数据类型 geojson 的属性,即以下形式的字符串: { “类型”:“特征”,
我使用传单构建了一个 map ,其中包含大的 GeoJSON 区域,这些区域由多个“较小”的 GeoJSON 区域组成。 我正在使用 Leaftet-Ajax 来这样调用它们: var Rennes
我已经能够让其中的一部分工作,但是当 properties.affectedZones 有多个条目时,我的 jQuery 失败了。我已经使用 .each 努力显示受到红旗警告的受影响区域,但是当有两个
我需要对从 geojson 文件中提取的每个功能进行不同的样式设置。然而,这个匿名样式函数仅更改它遇到的第一个功能的样式并停止。我是传单新手。看过几个演示,但找不到这个匿名样式函数仅更改第一个功能的样
我有多个 geojson 类型:存储在 Mysql 中的 FeatureCollection。我想将两个或多个 geojson 合并到一个 FeatureCollection geojson 中并显示
我有这个 geojson { "type":"FeatureCollection", "features":[ { "type":"Feature",
我正在尝试在基于标准 HelloWorld 示例应用程序的测试应用程序中加载以下 geoJson 文件。 { "type": "FeatureCollection", "generator":
我正在使用 GeoJSON 数据构建传单 map 。尝试根据 GeoJSON 属性设置我使用的图标时遇到问题。我认为我的错误与使用字符串调用对象有关,但我无法弄清楚它到底是什么。 这是我的代码: Ge
我有包含如下地理字段的文档。 "geo" : { "type" : "Point", "coordinates" : [ 37.44609999, -1
是否可以仅使用 JavaScript(通过 d3、topojson 或任何其他方式)确定给定纬度、经度的 GeoJSON 点是否位于给定 GeoJSON 多边形内? 例如,我可以根据教程 here 绘
我是一名优秀的程序员,十分优秀!