gis-rtree.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:7k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. -- source include/have_geometry.inc
  2. #
  3. # test of rtree (using with spatial data)
  4. #
  5. --disable_warnings
  6. DROP TABLE IF EXISTS t1, t2;
  7. --enable_warnings
  8. CREATE TABLE t1 (
  9.   fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
  10.   g GEOMETRY NOT NULL,
  11.   SPATIAL KEY(g)
  12. ) ENGINE=MyISAM;
  13. SHOW CREATE TABLE t1;
  14. let $1=150;
  15. let $2=150;
  16. while ($1)
  17. {
  18.   eval INSERT INTO t1 (g) VALUES (GeomFromText('LineString($1 $1, $2 $2)'));
  19.   dec $1;
  20.   inc $2;
  21. }
  22. SELECT count(*) FROM t1;
  23. EXPLAIN SELECT fid, AsText(g) FROM t1 WHERE Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))'));
  24. SELECT fid, AsText(g) FROM t1 WHERE Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))'));
  25. DROP TABLE t1;
  26. CREATE TABLE t2 (
  27.   fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
  28.   g GEOMETRY NOT NULL
  29. ) ENGINE=MyISAM;
  30. let $1=10;
  31. while ($1)
  32. {
  33.   let $2=10;
  34.   while ($2)
  35.   {
  36.     eval INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10))));
  37.     dec $2;
  38.   }
  39.   dec $1;
  40. }
  41. ALTER TABLE t2 ADD SPATIAL KEY(g);
  42. SHOW CREATE TABLE t2;
  43. SELECT count(*) FROM t2;
  44. EXPLAIN SELECT fid, AsText(g) FROM t2 WHERE Within(g, 
  45.   GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
  46. SELECT fid, AsText(g) FROM t2 WHERE Within(g, 
  47.   GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
  48. let $1=10;
  49. while ($1)
  50. {
  51.   let $2=10;
  52.   while ($2)
  53.   {
  54.     eval DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10)))));
  55.     SELECT count(*) FROM t2;
  56.     dec $2;
  57.   }
  58.   dec $1;
  59. }
  60. DROP TABLE t2;
  61. drop table if exists t1;
  62. CREATE TABLE t1 (a geometry NOT NULL, SPATIAL (a));
  63. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  64. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  65. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  66. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  67. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  68. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  69. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  70. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  71. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  72. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  73. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  74. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  75. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  76. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  77. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  78. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  79. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  80. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  81. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  82. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  83. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  84. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  85. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  86. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  87. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  88. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  89. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  90. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  91. INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
  92. check table t1;
  93. analyze table t1;
  94. drop table t1;
  95. #
  96. # The following crashed gis
  97. #
  98. CREATE TABLE t1 (
  99.   fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
  100.   g GEOMETRY NOT NULL,
  101.   SPATIAL KEY(g)
  102. ) ENGINE=MyISAM;
  103. INSERT INTO t1 (g) VALUES (GeomFromText('LineString(1 2, 2 3)')),(GeomFromText('LineString(1 2, 2 4)'));
  104. #select * from t1 where g<GeomFromText('LineString(1 2, 2 3)');
  105. drop table t1;
  106. CREATE TABLE t1 (
  107.   geoobjid INT NOT NULL,
  108.   line LINESTRING NOT NULL,
  109.   kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
  110.   name VARCHAR(32),
  111.   SPATIAL KEY (line)
  112. ) engine=myisam;
  113. ALTER TABLE t1 DISABLE KEYS;
  114. INSERT INTO t1 (name, kind, line) VALUES 
  115.   ("Aadaouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
  116.   ("Aadassiye", "pp", GeomFromText("POINT(35.816667 36.216667)")),
  117.   ("Aadbel", "pp", GeomFromText("POINT(34.533333 36.100000)")),
  118.   ("Aadchit", "pp", GeomFromText("POINT(33.347222 35.423611)")),
  119.   ("Aadchite", "pp", GeomFromText("POINT(33.347222 35.423611)")),
  120.   ("Aadchit el Qoussair", "pp", GeomFromText("POINT(33.283333 35.483333)")),
  121.   ("Aaddaye", "pp", GeomFromText("POINT(36.716667 40.833333)")),
  122.   ("'Aadeissa", "pp", GeomFromText("POINT(32.823889 35.698889)")),
  123.   ("Aaderup", "pp", GeomFromText("POINT(55.216667 11.766667)")),
  124.   ("Qalaat Aades", "pp", GeomFromText("POINT(33.503333 35.377500)")),
  125.   ("A ad'ino", "pp", GeomFromText("POINT(54.812222 38.209167)")),
  126.   ("Aadi Noia", "pp", GeomFromText("POINT(13.800000 39.833333)")),
  127.   ("Aad La Macta", "pp", GeomFromText("POINT(35.779444 -0.129167)")),
  128.   ("Aadland", "pp", GeomFromText("POINT(60.366667 5.483333)")),
  129.   ("Aadliye", "pp", GeomFromText("POINT(33.366667 36.333333)")),
  130.   ("Aadloun", "pp", GeomFromText("POINT(33.403889 35.273889)")),
  131.   ("Aadma", "pp", GeomFromText("POINT(58.798333 22.663889)")),
  132.   ("Aadma Asundus", "pp", GeomFromText("POINT(58.798333 22.663889)")),
  133.   ("Aadmoun", "pp", GeomFromText("POINT(34.150000 35.650000)")),
  134.   ("Aadneram", "pp", GeomFromText("POINT(59.016667 6.933333)")),
  135.   ("Aadneskaar", "pp", GeomFromText("POINT(58.083333 6.983333)")),
  136.   ("Aadorf", "pp", GeomFromText("POINT(47.483333 8.900000)")),
  137.   ("Aadorp", "pp", GeomFromText("POINT(52.366667 6.633333)")),
  138.   ("Aadouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
  139.   ("Aadoui", "pp", GeomFromText("POINT(34.450000 35.983333)")),
  140.   ("Aadouiye", "pp", GeomFromText("POINT(34.583333 36.183333)")),
  141.   ("Aadouss", "pp", GeomFromText("POINT(33.512500 35.601389)")),
  142.   ("Aadra", "pp", GeomFromText("POINT(33.616667 36.500000)")),
  143.   ("Aadzi", "pp", GeomFromText("POINT(38.100000 64.850000)"));
  144. ALTER TABLE t1 ENABLE KEYS;
  145. INSERT INTO t1 (name, kind, line) VALUES ("austria", "pp", GeomFromText('LINESTRING(14.9906 48.9887,14.9946 48.9904,14.9947 48.9916)'));
  146. drop table t1;
  147. CREATE TABLE t1 (st varchar(100));
  148. INSERT INTO t1 VALUES ("Fake string");
  149. CREATE TABLE t2 (geom GEOMETRY NOT NULL, SPATIAL KEY gk(geom));
  150. --error 1105
  151. INSERT INTO t2 SELECT GeomFromText(st) FROM t1;
  152. drop table t1, t2;
  153. CREATE TABLE t1 (`geometry` geometry NOT NULL default '',SPATIAL KEY `gndx` (`geometry`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  154. INSERT INTO t1 (geometry) VALUES
  155. (PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, -18.6055555000
  156. -66.8158332999, -18.7186111000 -66.8102777000, -18.7211111000 -66.9269443999,
  157. -18.6086111000 -66.9327777000))'));
  158. INSERT INTO t1 (geometry) VALUES
  159. (PolygonFromText('POLYGON((-65.7402776999 -96.6686111000, -65.7372222000
  160. -96.5516666000, -65.8502777000 -96.5461111000, -65.8527777000 -96.6627777000,
  161. -65.7402776999 -96.6686111000))'));
  162. check table t1 extended;
  163. drop table t1;
  164. # End of 4.1 tests