SQL表如何存储地图图例?
问题描述:
我不是要求选择哪个Map图例分类。但假设我选择了一个,我将如何将它正确存储在SQL表中?提问的原因是,最后,我需要储存比预期更多的信息......希望有人能够验证。SQL表如何存储地图图例?
考虑下面三种情况:
- 数值,范围
数值,单值
- 字母表,单值
为了能够存储它正确,使我能够做逻辑分类实时(着色),这意味着,我还需要存储操作符(小于[lt
],大于[gt
],等于[eq
]等)
结束了,说我有2个表:
LegendSetup
柱:
1. LegendKey (int)
2. Type (varchar)
3. Min (decimal)
4. Max (decimal)
LegendValueSetup
柱:
1. ValueKey (int) //AutoIncrement PK
2. LegendKey (int) //FK
3. RangeNumeric (decimal) //numeric
4. RangeAlpha (varchar) //alphabet
5. RangeOperator (varchar) //eq, lt, gt
6. RangeShow (varchar) //for display purpose
7. HexColor (varchar)
这是它通常如何工作?
答
当你只需要范围和平等,我建议你不要用明确的运营商,但范围是这样的:
CREATE TABLE LegendValueSetup (
ValueAlpha varchar,
ValueNumeric decimal,
LowerNumeric decimal,
UpperNumeric decimal,
... -- other columns
)
对于你的例子2和3,你只想明确的值存储在ValueAlpha
和ValueNumeric
列。 例如1,如果LowerNumeric
是一个包含数字,并且UpperNumeric
是一个独占界限,反之亦然,您将不得不考虑。然后,你可以存储这样的传说:
LowerNumeric | UpperNumeric | Color
NULL | 100 | Black
100 | 200 | Red
200 | 400 | Orange
400 | 600 | Yellow
600 | NULL | Green
如果你现在的值,并希望得到的颜色,你只需要查询
SELECT color FROM LegendValueSetup WHERE LowerNumeric <= $value AND UpperNumeric > $value
当然,你可以走得更远,分裂表分成三个不同的,每个传说类型一个。
你是什么意思的“着色”?给定地图上的x,y坐标(或者其值),根据LegendValueSetup为其分配HexColor? – contradictioned
该地图加载geojson。在geojson中,它定义了具有属性的多边形(例如:多边形1有一个总体= 150)。因此,在进行逻辑比较之后,根据LegendValueSetup,多边形将被填充HexColor。 – zeroflaw
'只有一列的LegendSetup'表?这可能是一个错误或者我不能正确理解的例子。 –