正在显示
3 个修改的文件
包含
79 行增加
和
73 行删除
@@ -191,8 +191,9 @@ namespace DmapCore_30 | @@ -191,8 +191,9 @@ namespace DmapCore_30 | ||
191 | { | 191 | { |
192 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); | 192 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); |
193 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 193 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
194 | - unsigned char hasZ = hasZorSrsid / 8; | ||
195 | - unsigned char hasSrsid = hasZorSrsid % 8; | 194 | + unsigned char hasM = hasZorSrsid & 1<<2; |
195 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
196 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
196 | 197 | ||
197 | int not_big = here[0]; | 198 | int not_big = here[0]; |
198 | here++; | 199 | here++; |
@@ -275,8 +276,9 @@ namespace DmapCore_30 | @@ -275,8 +276,9 @@ namespace DmapCore_30 | ||
275 | { | 276 | { |
276 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); | 277 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); |
277 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 278 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
278 | - unsigned char hasZ = hasZorSrsid / 8; | ||
279 | - unsigned char hasSrsid = hasZorSrsid % 8; | 279 | + unsigned char hasM = hasZorSrsid & 1<<2; |
280 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
281 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
280 | 282 | ||
281 | int not_big = here[0]; | 283 | int not_big = here[0]; |
282 | here++; | 284 | here++; |
@@ -368,8 +370,10 @@ namespace DmapCore_30 | @@ -368,8 +370,10 @@ namespace DmapCore_30 | ||
368 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); | 370 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); |
369 | unsigned char geom_type = (here)[1]; | 371 | unsigned char geom_type = (here)[1]; |
370 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 372 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
371 | - unsigned char hasZ = hasZorSrsid / 8; | ||
372 | - unsigned char hasSrsid = hasZorSrsid % 8; | 373 | + unsigned char hasM = hasZorSrsid & 1<<2; |
374 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
375 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
376 | + | ||
373 | int not_big = clsUtil::ReadByte(here); | 377 | int not_big = clsUtil::ReadByte(here); |
374 | int shapetype = clsUtil::ReadInt(here, not_big); | 378 | int shapetype = clsUtil::ReadInt(here, not_big); |
375 | if (hasSrsid) | 379 | if (hasSrsid) |
@@ -404,11 +408,8 @@ namespace DmapCore_30 | @@ -404,11 +408,8 @@ namespace DmapCore_30 | ||
404 | 408 | ||
405 | double x = clsUtil::ReadDouble(here, not_big); | 409 | double x = clsUtil::ReadDouble(here, not_big); |
406 | double y = clsUtil::ReadDouble(here, not_big); | 410 | double y = clsUtil::ReadDouble(here, not_big); |
407 | - if (hasZ) | ||
408 | - { | ||
409 | - //Z 值跳过 | ||
410 | - here += 8; | ||
411 | - } | 411 | + if (hasZ)here += 8; |
412 | + if (hasM) here += 8; | ||
412 | double x0 = 0, y0 = 0; | 413 | double x0 = 0, y0 = 0; |
413 | this->ToScale(x, y, x0, y0); | 414 | this->ToScale(x, y, x0, y0); |
414 | 415 | ||
@@ -446,11 +447,8 @@ namespace DmapCore_30 | @@ -446,11 +447,8 @@ namespace DmapCore_30 | ||
446 | 447 | ||
447 | double x = clsUtil::ReadDouble(here, not_big2); | 448 | double x = clsUtil::ReadDouble(here, not_big2); |
448 | double y = clsUtil::ReadDouble(here, not_big2); | 449 | double y = clsUtil::ReadDouble(here, not_big2); |
449 | - if (hasZ) | ||
450 | - { | ||
451 | - //Z 值跳过 | ||
452 | - here += 8; | ||
453 | - } | 450 | + if (hasZ) here += 8; |
451 | + if (hasM) here += 8; | ||
454 | double x0 = 0, y0 = 0; | 452 | double x0 = 0, y0 = 0; |
455 | this->ToScale(x, y, x0, y0); | 453 | this->ToScale(x, y, x0, y0); |
456 | 454 | ||
@@ -492,8 +490,10 @@ namespace DmapCore_30 | @@ -492,8 +490,10 @@ namespace DmapCore_30 | ||
492 | 490 | ||
493 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); | 491 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); |
494 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 492 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
495 | - unsigned char hasZ = hasZorSrsid / 8; | ||
496 | - unsigned char hasSrsid = hasZorSrsid % 8; | 493 | + unsigned char hasM = hasZorSrsid & 1<<2; |
494 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
495 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
496 | + | ||
497 | int not_big = clsUtil::ReadByte(here); | 497 | int not_big = clsUtil::ReadByte(here); |
498 | int shapetype = clsUtil::ReadInt(here, not_big); | 498 | int shapetype = clsUtil::ReadInt(here, not_big); |
499 | if (hasSrsid) | 499 | if (hasSrsid) |
@@ -527,11 +527,8 @@ namespace DmapCore_30 | @@ -527,11 +527,8 @@ namespace DmapCore_30 | ||
527 | 527 | ||
528 | double x = clsUtil::ReadDouble(here, not_big2); | 528 | double x = clsUtil::ReadDouble(here, not_big2); |
529 | double y = clsUtil::ReadDouble(here, not_big2); | 529 | double y = clsUtil::ReadDouble(here, not_big2); |
530 | - if (hasZ) | ||
531 | - { | ||
532 | - //Z 值跳过 | ||
533 | - here += 8; | ||
534 | - } | 530 | + if (hasZ) here += 8; |
531 | + if (hasM) here += 8; | ||
535 | double x0 = 0, y0 = 0; | 532 | double x0 = 0, y0 = 0; |
536 | this->ToScale(x, y, x0, y0); | 533 | this->ToScale(x, y, x0, y0); |
537 | 534 | ||
@@ -639,8 +636,9 @@ namespace DmapCore_30 | @@ -639,8 +636,9 @@ namespace DmapCore_30 | ||
639 | 636 | ||
640 | unsigned char geom_type = (here)[1]; | 637 | unsigned char geom_type = (here)[1]; |
641 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 638 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
642 | - unsigned char hasZ = hasZorSrsid / 8; | ||
643 | - unsigned char hasSrsid = hasZorSrsid % 8; | 639 | + unsigned char hasM = hasZorSrsid & 1<<2; |
640 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
641 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
644 | // printf("%d %d \r\n",i,geom_type ); | 642 | // printf("%d %d \r\n",i,geom_type ); |
645 | not_big1 = clsUtil::ReadByte(here); | 643 | not_big1 = clsUtil::ReadByte(here); |
646 | shapetype1 = clsUtil::ReadInt(here, not_big1); | 644 | shapetype1 = clsUtil::ReadInt(here, not_big1); |
@@ -720,11 +718,8 @@ namespace DmapCore_30 | @@ -720,11 +718,8 @@ namespace DmapCore_30 | ||
720 | { | 718 | { |
721 | double x = clsUtil::ReadDouble(here, not_big1); | 719 | double x = clsUtil::ReadDouble(here, not_big1); |
722 | double y = clsUtil::ReadDouble(here, not_big1); | 720 | double y = clsUtil::ReadDouble(here, not_big1); |
723 | - if (hasZ) | ||
724 | - { | ||
725 | - //Z 值跳过 | ||
726 | - here += 8; | ||
727 | - } | 721 | + if (hasZ) here += 8; |
722 | + if (hasM) here += 8; | ||
728 | double x0 = 0, y0 = 0; | 723 | double x0 = 0, y0 = 0; |
729 | this->ToScale(x, y, x0, y0); | 724 | this->ToScale(x, y, x0, y0); |
730 | 725 | ||
@@ -817,11 +812,8 @@ namespace DmapCore_30 | @@ -817,11 +812,8 @@ namespace DmapCore_30 | ||
817 | { | 812 | { |
818 | double x = clsUtil::ReadDouble(here, not_big2); | 813 | double x = clsUtil::ReadDouble(here, not_big2); |
819 | double y = clsUtil::ReadDouble(here, not_big2); | 814 | double y = clsUtil::ReadDouble(here, not_big2); |
820 | - if (hasZ) | ||
821 | - { | ||
822 | - //Z 值跳过 | ||
823 | - here += 8; | ||
824 | - } | 815 | + if (hasZ) here += 8; |
816 | + if (hasM) here += 8; | ||
825 | double x0 = 0, y0 = 0; | 817 | double x0 = 0, y0 = 0; |
826 | this->ToScale(x, y, x0, y0); | 818 | this->ToScale(x, y, x0, y0); |
827 | 819 | ||
@@ -879,8 +871,9 @@ namespace DmapCore_30 | @@ -879,8 +871,9 @@ namespace DmapCore_30 | ||
879 | 871 | ||
880 | unsigned char geom_type = (here)[1]; | 872 | unsigned char geom_type = (here)[1]; |
881 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 873 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
882 | - unsigned char hasZ = hasZorSrsid / 8; | ||
883 | - unsigned char hasSrsid = hasZorSrsid % 8; | 874 | + unsigned char hasM = hasZorSrsid & 1<<2; |
875 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
876 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
884 | 877 | ||
885 | not_big1 = clsUtil::ReadByte(here); | 878 | not_big1 = clsUtil::ReadByte(here); |
886 | shapetype1 = clsUtil::ReadInt(here, not_big1); | 879 | shapetype1 = clsUtil::ReadInt(here, not_big1); |
@@ -1008,11 +1001,8 @@ namespace DmapCore_30 | @@ -1008,11 +1001,8 @@ namespace DmapCore_30 | ||
1008 | { | 1001 | { |
1009 | double x = clsUtil::ReadDouble(here, not_big2); | 1002 | double x = clsUtil::ReadDouble(here, not_big2); |
1010 | double y = clsUtil::ReadDouble(here, not_big2); | 1003 | double y = clsUtil::ReadDouble(here, not_big2); |
1011 | - if (hasZ) | ||
1012 | - { | ||
1013 | - //Z 值跳过 | ||
1014 | - here += 8; | ||
1015 | - } | 1004 | + if (hasZ) here += 8; |
1005 | + if (hasM) here += 8; | ||
1016 | double x0 = 0, y0 = 0; | 1006 | double x0 = 0, y0 = 0; |
1017 | this->ToScale(x, y, x0, y0); | 1007 | this->ToScale(x, y, x0, y0); |
1018 | 1008 | ||
@@ -1066,8 +1056,9 @@ namespace DmapCore_30 | @@ -1066,8 +1056,9 @@ namespace DmapCore_30 | ||
1066 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); | 1056 | unsigned char *here = (unsigned char *)PQgetvalue(res, i, 0); |
1067 | unsigned char geom_type = (here)[1]; | 1057 | unsigned char geom_type = (here)[1]; |
1068 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 1058 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
1069 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1070 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1059 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1060 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1061 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1071 | not_big1 = clsUtil::ReadByte(here); | 1062 | not_big1 = clsUtil::ReadByte(here); |
1072 | shapetype1 = clsUtil::ReadInt(here, not_big1); | 1063 | shapetype1 = clsUtil::ReadInt(here, not_big1); |
1073 | if (hasSrsid) | 1064 | if (hasSrsid) |
@@ -1194,11 +1185,8 @@ namespace DmapCore_30 | @@ -1194,11 +1185,8 @@ namespace DmapCore_30 | ||
1194 | { | 1185 | { |
1195 | double x = clsUtil::ReadDouble(here, not_big2); | 1186 | double x = clsUtil::ReadDouble(here, not_big2); |
1196 | double y = clsUtil::ReadDouble(here, not_big2); | 1187 | double y = clsUtil::ReadDouble(here, not_big2); |
1197 | - if (hasZ) | ||
1198 | - { | ||
1199 | - //Z 值跳过 | ||
1200 | - here += 8; | ||
1201 | - } | 1188 | + if (hasZ) here += 8; |
1189 | + if (hasM) here += 8; | ||
1202 | double x0 = 0, y0 = 0; | 1190 | double x0 = 0, y0 = 0; |
1203 | this->ToScale(x, y, x0, y0); | 1191 | this->ToScale(x, y, x0, y0); |
1204 | 1192 | ||
@@ -1630,8 +1618,9 @@ namespace DmapCore_30 | @@ -1630,8 +1618,9 @@ namespace DmapCore_30 | ||
1630 | shared_ptr<PointClass> DataCollection::GetDataPoint(unsigned char *vc) | 1618 | shared_ptr<PointClass> DataCollection::GetDataPoint(unsigned char *vc) |
1631 | { | 1619 | { |
1632 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; | 1620 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; |
1633 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1634 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1621 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1622 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1623 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1635 | 1624 | ||
1636 | int not_big = clsUtil::ReadByte(vc); | 1625 | int not_big = clsUtil::ReadByte(vc); |
1637 | int shapetype = clsUtil::ReadInt(vc, not_big); | 1626 | int shapetype = clsUtil::ReadInt(vc, not_big); |
@@ -1650,8 +1639,9 @@ namespace DmapCore_30 | @@ -1650,8 +1639,9 @@ namespace DmapCore_30 | ||
1650 | shared_ptr<PointClass> DataCollection::GetMDataPoint(unsigned char *vc) | 1639 | shared_ptr<PointClass> DataCollection::GetMDataPoint(unsigned char *vc) |
1651 | { | 1640 | { |
1652 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; | 1641 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; |
1653 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1654 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1642 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1643 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1644 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1655 | 1645 | ||
1656 | int not_big = clsUtil::ReadByte(vc); | 1646 | int not_big = clsUtil::ReadByte(vc); |
1657 | int shapetype = clsUtil::ReadInt(vc, not_big); | 1647 | int shapetype = clsUtil::ReadInt(vc, not_big); |
@@ -1686,8 +1676,9 @@ namespace DmapCore_30 | @@ -1686,8 +1676,9 @@ namespace DmapCore_30 | ||
1686 | shared_ptr<PolygonClass> DataCollection::GetDataLine(unsigned char *vc) | 1676 | shared_ptr<PolygonClass> DataCollection::GetDataLine(unsigned char *vc) |
1687 | { | 1677 | { |
1688 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; | 1678 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; |
1689 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1690 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1679 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1680 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1681 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1691 | 1682 | ||
1692 | int not_big = clsUtil::ReadByte(vc); | 1683 | int not_big = clsUtil::ReadByte(vc); |
1693 | int shapetype = clsUtil::ReadInt(vc, not_big); | 1684 | int shapetype = clsUtil::ReadInt(vc, not_big); |
@@ -1722,8 +1713,9 @@ namespace DmapCore_30 | @@ -1722,8 +1713,9 @@ namespace DmapCore_30 | ||
1722 | double y = clsUtil::ReadDouble(vc, not_big); | 1713 | double y = clsUtil::ReadDouble(vc, not_big); |
1723 | p_polygon->vec_X.push_back(x); | 1714 | p_polygon->vec_X.push_back(x); |
1724 | p_polygon->vec_Y.push_back(y); | 1715 | p_polygon->vec_Y.push_back(y); |
1725 | - if (hasZ) | ||
1726 | - vc += 8; | 1716 | + if (hasZ) vc += 8; |
1717 | + if (hasM) vc += 8; | ||
1718 | + | ||
1727 | if (pol_minx > x) | 1719 | if (pol_minx > x) |
1728 | pol_minx = x; | 1720 | pol_minx = x; |
1729 | if (pol_miny > y) | 1721 | if (pol_miny > y) |
@@ -1744,8 +1736,9 @@ namespace DmapCore_30 | @@ -1744,8 +1736,9 @@ namespace DmapCore_30 | ||
1744 | shared_ptr<PolygonClass> DataCollection::GetDataMLine(unsigned char *vc) | 1736 | shared_ptr<PolygonClass> DataCollection::GetDataMLine(unsigned char *vc) |
1745 | { | 1737 | { |
1746 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; | 1738 | unsigned char hasZorSrsid = ((unsigned char *)(vc + 4))[0] / 16; |
1747 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1748 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1739 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1740 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1741 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1749 | 1742 | ||
1750 | int not_big = clsUtil::ReadByte(vc); | 1743 | int not_big = clsUtil::ReadByte(vc); |
1751 | int shapetype = clsUtil::ReadInt(vc, not_big); | 1744 | int shapetype = clsUtil::ReadInt(vc, not_big); |
@@ -1782,8 +1775,8 @@ namespace DmapCore_30 | @@ -1782,8 +1775,8 @@ namespace DmapCore_30 | ||
1782 | double y = clsUtil::ReadDouble(vc, not_big2); | 1775 | double y = clsUtil::ReadDouble(vc, not_big2); |
1783 | p_polygon->vec_X.push_back(x); | 1776 | p_polygon->vec_X.push_back(x); |
1784 | p_polygon->vec_Y.push_back(y); | 1777 | p_polygon->vec_Y.push_back(y); |
1785 | - if (hasZ) | ||
1786 | - vc += 8; | 1778 | + if (hasZ) vc += 8; |
1779 | + if (hasM) vc += 8; | ||
1787 | if (pol_minx > x) | 1780 | if (pol_minx > x) |
1788 | pol_minx = x; | 1781 | pol_minx = x; |
1789 | if (pol_miny > y) | 1782 | if (pol_miny > y) |
@@ -1807,8 +1800,9 @@ namespace DmapCore_30 | @@ -1807,8 +1800,9 @@ namespace DmapCore_30 | ||
1807 | try | 1800 | try |
1808 | { | 1801 | { |
1809 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 1802 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
1810 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1811 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1803 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1804 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1805 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1812 | //bool hasZ = false; | 1806 | //bool hasZ = false; |
1813 | int not_big1, not_big2, shapetype1, nring, npoint; | 1807 | int not_big1, not_big2, shapetype1, nring, npoint; |
1814 | not_big1 = clsUtil::ReadByte(here); | 1808 | not_big1 = clsUtil::ReadByte(here); |
@@ -1842,8 +1836,8 @@ namespace DmapCore_30 | @@ -1842,8 +1836,8 @@ namespace DmapCore_30 | ||
1842 | { | 1836 | { |
1843 | double x = clsUtil::ReadDouble(here, not_big1); | 1837 | double x = clsUtil::ReadDouble(here, not_big1); |
1844 | double y = clsUtil::ReadDouble(here, not_big1); | 1838 | double y = clsUtil::ReadDouble(here, not_big1); |
1845 | - if (hasZ) | ||
1846 | - here += 8; | 1839 | + if (hasZ) here += 8; |
1840 | + if (hasM) here += 8; | ||
1847 | p_polygon->vec_X.push_back(x); | 1841 | p_polygon->vec_X.push_back(x); |
1848 | p_polygon->vec_Y.push_back(y); | 1842 | p_polygon->vec_Y.push_back(y); |
1849 | 1843 | ||
@@ -1886,8 +1880,9 @@ namespace DmapCore_30 | @@ -1886,8 +1880,9 @@ namespace DmapCore_30 | ||
1886 | try | 1880 | try |
1887 | { | 1881 | { |
1888 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; | 1882 | unsigned char hasZorSrsid = ((unsigned char *)(here + 4))[0] / 16; |
1889 | - unsigned char hasZ = hasZorSrsid / 8; | ||
1890 | - unsigned char hasSrsid = hasZorSrsid % 8; | 1883 | + unsigned char hasM = hasZorSrsid & 1<<2; |
1884 | + unsigned char hasZ = hasZorSrsid & 1<<3; | ||
1885 | + unsigned char hasSrsid = hasZorSrsid & 1<<1; | ||
1891 | 1886 | ||
1892 | unsigned char geom_type = (here)[1]; | 1887 | unsigned char geom_type = (here)[1]; |
1893 | 1888 | ||
@@ -1947,8 +1942,8 @@ namespace DmapCore_30 | @@ -1947,8 +1942,8 @@ namespace DmapCore_30 | ||
1947 | { | 1942 | { |
1948 | double x = clsUtil::ReadDouble(here, not_big2); | 1943 | double x = clsUtil::ReadDouble(here, not_big2); |
1949 | double y = clsUtil::ReadDouble(here, not_big2); | 1944 | double y = clsUtil::ReadDouble(here, not_big2); |
1950 | - if (hasZ) | ||
1951 | - here += 8; | 1945 | + if (hasZ) here += 8; |
1946 | + if (hasM) here += 8; | ||
1952 | p_polygon->vec_X.push_back(x); | 1947 | p_polygon->vec_X.push_back(x); |
1953 | p_polygon->vec_Y.push_back(y); | 1948 | p_polygon->vec_Y.push_back(y); |
1954 | 1949 |
@@ -19,9 +19,10 @@ namespace mapserver | @@ -19,9 +19,10 @@ namespace mapserver | ||
19 | unsigned char hasZorSrsid = ((unsigned char *)(pwkb + 4))[0] / 16; | 19 | unsigned char hasZorSrsid = ((unsigned char *)(pwkb + 4))[0] / 16; |
20 | 20 | ||
21 | unsigned char type = ((unsigned char *)(pwkb + 1))[0]; | 21 | unsigned char type = ((unsigned char *)(pwkb + 1))[0]; |
22 | - this->hasZ_ = hasZorSrsid / 8; | ||
23 | - this->hasSrid_ = hasZorSrsid % 8; | ||
24 | - | 22 | + |
23 | + this->hasSrid_ = hasZorSrsid & 1<<1; | ||
24 | + this->hasM_ = hasZorSrsid & 1<<2; | ||
25 | + this->hasZ_ =hasZorSrsid & 1<<3; | ||
25 | 26 | ||
26 | notbig_ = this->ReadByte(pwkb); | 27 | notbig_ = this->ReadByte(pwkb); |
27 | int shape = this->ReadInt(pwkb, notbig_); | 28 | int shape = this->ReadInt(pwkb, notbig_); |
@@ -40,7 +41,11 @@ namespace mapserver | @@ -40,7 +41,11 @@ namespace mapserver | ||
40 | // case DmpWkbTypes::Type::PointZM: | 41 | // case DmpWkbTypes::Type::PointZM: |
41 | { | 42 | { |
42 | sstream << R"({"type":"Point","coordinates": [)"; | 43 | sstream << R"({"type":"Point","coordinates": [)"; |
43 | - readPointfromWKB(pwkb,sstream); | 44 | + double xx = this->ReadDouble(pwkb,notbig_); |
45 | + double yy = this->ReadDouble(pwkb,notbig_); | ||
46 | + | ||
47 | + sstream << ToDoubleStr(xx) << "," << ToDoubleStr(yy) ; | ||
48 | + | ||
44 | break; | 49 | break; |
45 | } | 50 | } |
46 | 51 | ||
@@ -136,6 +141,11 @@ namespace mapserver | @@ -136,6 +141,11 @@ namespace mapserver | ||
136 | pwkb += 8; | 141 | pwkb += 8; |
137 | // double zz = this->ReadDouble(pwkb,notbig_); | 142 | // double zz = this->ReadDouble(pwkb,notbig_); |
138 | } | 143 | } |
144 | + if(hasM_) | ||
145 | + { | ||
146 | + pwkb += 8; | ||
147 | + // double zz = this->ReadDouble(pwkb,notbig_); | ||
148 | + } | ||
139 | return true; | 149 | return true; |
140 | } | 150 | } |
141 | 151 |
请
注册
或
登录
后发表评论