SELECT * FROM GeoGlyphWKT LET Target = (SELECT Location FROM GeoGlyphWKT WHERE Name="Hands") WHERE ST_Distance_Sphere(Location, $Target.Location[0]) <= 2000
Il giorno martedì 13 dicembre 2016 01:57:36 UTC+1, William ha scritto: > > I'm working on a progression where my ultimate goal is to be able to > generate connected components of vertices that are within some proximity of > each other. Ideally, I'd have two sets of vertices, A and B where vertices > va and vb come from A and B respectively. I'd like to generate edges > (va,vb) if dist(va,vb) is under some threshold. > > Building up to this, the first thing I'm trying to do is identify which > vertices are within 2km of some named vertex. > > The dataset that I put together for this has the locations of a few of the > nazca lines geoglyphs in Peru that I found using Google Earth: > > Name,Location > Hummingbird,"POINT(-75.148892 -14.692131)" > Monkey,"POINT(-75.138532 -14.706940)" > Condor,"POINT(-75.126208 -14.697444)" > Spider,"POINT(-75.122381 -14.694145)" > Spiral,"POINT(-75.122746 -14.688277)" > Hands,"POINT(-75.113881 -14.694459)" > Tree,"POINT(-75.114520 -14.693898)" > Astronaut,"POINT(-75.079755 -14.745222)" > Dog,"POINT(-75.130788 -14.706401)" > Wing,"POINT(-75.100385 -14.680309)" > Parrot,"POINT(-75.107498 -14.689463)" > > The vertex class GeoGlyphWKT is created in this manner: > > CREATE CLASS GeoGlyphWKT EXTENDS V CLUSTERS 1 > CREATE PROPERTY GeoGlyphWKT.Name STRING > CREATE PROPERTY GeoGlyphWKT.Location EMBEDDED OPoint > CREATE PROPERTY GeoGlyphWKT.Tag EMBEDDEDSET STRING > CREATE INDEX GeoGlyphWKT.idxLocation ON GeoGlyphWKT (Location) SPATIAL > ENGINE LUCENE > > I've looked over the help documentation > <http://orientdb.com/docs/2.2.x/Spatial-Index.html> and have figured out > do a rooted search if I directly enter the coordinates. For example looking > for what's within 2km of the "Hands" geoglyph: > > SELECT *, $Distance AS Distance FROM GeoGlyphWKT > LET Distance = ST_Distance_Sphere(Location, ST_GeomFromText('POINT(-75.148892 > -14.692131)')) > WHERE $Distance <= 2000 > > > +----+-----+-----------+-----------------------+-----------+------------------+ > |# |@RID |@CLASS |Location |Name |Distance > | > > +----+-----+-----------+-----------------------+-----------+------------------+ > |0 |#25:0|GeoGlyphWKT|OPoint{coordinates:[2]}|Hummingbird|0.0 > | > |1 |#25:1|GeoGlyphWKT|OPoint{coordinates:[2]}|Monkey > |1990.4884419468854| > > +----+-----+-----------+-----------------------+-----------+------------------+ > > ... but I'd rather just do a named search where GeoGlyphWKT.Name = "Hands" > ... > > So, I tried to follow the template that I used on the old-style indexes > (see (1) in the stack overflow links at the bottom). I ended up with the > following query which doesn't work: > > SELECT FROM GeoGlyphWKT > LET Source = (SELECT FROM GeoGlyphWKT WHERE Name="Hands") > WHERE ST_Distance_Sphere(Location, $Source.Location) < 2000 > > > Error: com.orientechnologies.orient.core.exception. > OCommandExecutionException: Error on execution of command: sql.select > FROM GeoGlyphWKT LET Source = (SELECT FROM GeoGlyphWKT WHERE Name="Hands") > WHERE ST_Distance_Sphere(Location, $Source.Location) < 2000 > DB name="nazca-wkt.orientdb" > > > Error: java.lang.NullPointerException > > Any suggestions on how to do this search would be great! > > Thanks! > -William > > > *Related stack overflow questions* > > 1. rooted spatial query with sub-select in OrientDB > > <http://stackoverflow.com/questions/40942434/rooted-spatial-query-with-sub-select-in-orientdb> > - > uses the older spatial index that omits the use of WKT. > 2. Importing OPoint data into OrientDB 2.2.x using ETL from a CSV file > > <http://stackoverflow.com/questions/41027600/importing-opoint-data-into-orientdb-2-2-x-using-etl-from-a-csv-file> > - > For help with loading the WKT into a graph using the oetl.sh tool. > > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to orient-database+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.