我正在使用RGeo(PostGIS)和Ruby on Rails,两者都是新手。我有一个包含坐标属性(纬度和经度)的模型。我在绑定表单属性时使用文本输入字段,但我想将值格式化为人类可读的形式。目前正在呈现'作为原始DB值,即' 0101000020E61000009468C9E3698C5EC065FED13769D64740'。我希望将其格式化为类似于' -122.193963,47.675086'为用户。相反,如果用户更新了值,我将需要将其解析为PostGIS可以理解的格式。
我一直在搜索和阅读有关将数据绑定到RoR中的表单的内容,但无法找到有用的内容。
答案 0 :(得分:1)
您正在看到well-known binary (WKB)的十六进制编码表示。有many geometry accessors以不同的格式或表示形式获取坐标信息。例如:
SELECT ST_AsText(geom) AS WKT, ST_Y(geom) AS latitude, ST_X(geom) AS longitude
FROM (
SELECT '0101000020E61000009468C9E3698C5EC065FED13769D64740'::geometry AS geom
) AS f;
wkt | latitude | longitude
------------------------------+-----------+-------------
POINT(-122.193963 47.675086) | 47.675086 | -122.193963
在Ruby RGeo方面,可以使用WKBParser获取类似信息。例如,在tc_wkb_parser.rb中你可以做类似的事情:
parser_ = ::RGeo::WKRep::WKBParser.new
obj_ = parser_.parse('0101000020E61000009468C9E3698C5EC065FED13769D64740')
print [obj_.y, obj_.x] # [-122.193963, 47.675086]