gpt4 book ai didi

javascript - CARTO 从 the_geom 参数为零的表中创建 map

转载 作者:行者123 更新时间:2023-11-29 20:54:30 25 4
gpt4 key购买 nike

我已使用 .csv 文件将新数据集添加到 carto Builder。但是 the_geom 列为空。因此,当我通过以下方式使用 reactjs 和 carto.js 创建 map 时:

this.cartoClient = new carto.Client({ apiKey: 'key', username: 'user' });
<Map center={center} zoom={zoom} ref={node => { this.nativeMap = node && node.leafletElement }}>
<Basemap attribution="" url={CARTO_BASEMAP} />

<Layer
source={airbnb.source}
style={this.state.layerStyle}
client={this.cartoClient}
hidden={this.state.hidelayers}
/>
</Map>

并使用 airbnb.source

SELECT
cartodb_id, field_1,field_8, field_7, field_6, field_2, field_4, field_3, field_5,
ST_SetSRID( ST_MakePoint(
field_4,
field_3
),
4326
) AS the_geom,
ST_Transform(ST_Buffer(the_geom,0.001), 3857) as the_geom_webmercator
FROM (SELECT * FROM allreports) AS _camshaft_georeference_long_lat_analysis

Carto.js 没有在我的 map 上标记点,所以我明白了。我应该如何解决 the_geom、the_geom_webmercator 以获得带点的 map 或问题出在其他地方?

最佳答案

相同的 SQL 在 Builder 中是否有效?你从哪里得到的?在没有看到实际数据的情况下,只能推测可以做什么,而且您的字段名称在这里也不是很有帮助。或者它是从 Builder 自动生成的 SQL?我不确定绕过那个是不是个好主意,即使它现在可以工作,那么这些内部结构可以随时更改。通常有以下几种情况如何获取要映射的数据:

  • 导入器从表结构中尝试一些启发式方法将其添加到映射中。例如,如果您有列名 latitudelongitude,那么表格将自动进行地理编码,即 geom 字段被填充并且表格正常工作。或者如果有包含英文城市名称的 city 列,那么它也很有可能会出现在 map 上。因此,最简单的方法是使用这些字段名称(如果您的数据中已有)。
  • 您可以使用 Carto SQL API 对表进行永久地理编码,在命名地点的情况下,使用类似 UPDATE {tablename} SET the_geom = cdb_geocode_namedplace_point({city_column}, {province_column}, {country_column}) ,或者如果您有 wgs lat/lon 字段,则 UPDATE {tablename} SET the_geom = st_setsrid(st_point({lon_column}, {lat_column}),4326)。这样 the_geom 将被填充。为了确保我也会执行 UPDATE {tablename} SET the_geom_webercator = st_transform(the_geom, 3857)。当然你可以在这里使用st_buffer等。
  • 您也可以像现在尝试的那样进行实时地理编码查询,只要确保有唯一的 cartodb_id、正确的 the_geom(在 wgs84 中)和 the_geom_webmercator(在 epsg3857 投影中,就像您拥有的那样)。如果您的数据以某种方式动态更新,这更有意义,否则我会对表进行一次性 UPDATE
  • 使用 Builder 地理编码分析。这将创建另一个具有地理编码数据的“虚拟”实时数据集,并且可以在 map View 或进一步分析中使用。恐怕这无法在 carto.js map 中完成/显示,这仅在 Builder 中。

附注您可以在 https://gis.stackexchange.com/questions/tagged/carto 中找到更多与 carto 相关的帖子

关于javascript - CARTO 从 the_geom 参数为零的表中创建 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50027992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com