Если Ваш HTML следует стандартам XHTML, можно сделать большой парсинг и обработку использования классов пространства имен System.XML.
, Если, с другой стороны, если то, что Вы анализируете, - то, что веб-разработчики называют "супом тега", Вам будет нужен сторонний синтаксический анализатор как Пакет Гибкости HTML .
Это может быть только частичным решением Вашей проблемы, при попытке выяснить, как браузер интерпретирует Ваш HTML как каждый суп тега синтаксических анализов браузера немного по-другому.
В DB2 это также многоугольник. Похоже, вы храните сетки, поэтому быстрая проверка может заключаться в том, что если ST_ENVELOPE (geometry) == geometry, то у вас есть квадрат
Этот код взят из
SET CURRENT PATH = CURRENT PATH, db2gse;
CREATE TABLE sample_geoms (id INTEGER, geometry ST_Geometry);
INSERT INTO sample_geoms VALUES
(1, ST_Geometry(ST_Point('point EMPTY',0)));
INSERT INTO sample_geoms VALUES
(2, ST_Geometry(ST_Point('point zm (10 10 16 30)' ,0)));
INSERT INTO sample_geoms VALUES
(3, ST_Geometry(ST_Multipoint('multipoint m (10 10 5, 50 10 6,
10 30 8)' ,0)));
INSERT INTO sample_geoms VALUES
(4, ST_Geometry(ST_Linestring('linestring (10 10, 20 10)',0)));
INSERT INTO sample_geoms VALUES
(5, ST_Geometry(ST_Polygon('polygon((40 120, 90 120, 90 150,
40 150, 40 120))',0)));
SELECT id, CAST(ST_AsText(ST_Envelope(geometry)) as VARCHAR(160)) Envelope
FROM sample_geoms;
Результаты:
ID ENVELOPE
----------- ---------------------------------------------------------------
1 -
2 POLYGON (( 9 9, 11 9, 11 11, 9 11, 9 9))
3 POLYGON (( 10 10, 50 10, 50 30, 10 30, 10 10))
4 POLYGON (( 10 9, 20 9, 20 11, 10 11, 10 9))
5 POLYGON (( 40 120, 90 120, 90 150, 40 150, 40 120))
См. ID = 5? последний POLYGON == ST_ENVELOPE (геометрия)
Возможно, вы ищете ST_Envelope - я не знаю наверняка насчет DB2, но это часть стандарта OGC. Любая невертикальная или негоризонтальная линия или многоугольник сгенерирует прямоугольник с помощью этой функции, сохраняя координаты обычно как числа с плавающей точкой.
Даже если ваши данные представляют собой прямоугольник или квадрат, вам все равно потребуется использовать тип ST_POLYGON. Однако, когда вы выполняете запрос к данным, вы можете использовать фильтры первого порядка, такие как ST_EnvIntersects .
Обычно пространственная база данных сравнивает огибающие (т. Е. Прямоугольник, содержащий многоугольник) для пересечения. Затем он выполняет более затратный расчет пересечения полигонов с полигонами. В этом случае, поскольку ваши полигоны равны конверту, вы можете пропустить второй, более дорогой шаг.
Что касается проверки данных, вы можете добавить триггер базы данных, который проверяет ST_EQUALS (ST_ENVELOPE (geom), geom) = 1 .