Skip to content

Commit 76b5162

Browse files
committed
Add spatial types examples (#816)
1 parent faf6f6b commit 76b5162

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

test/examples.test.js

+183
Original file line numberDiff line numberDiff line change
@@ -1307,6 +1307,189 @@ describe('#integration examples', () => {
13071307
}
13081308
}, 30000)
13091309
})
1310+
1311+
describe('geospartial types examples', () => {
1312+
describe('Point', () => {
1313+
it('Cartesian', async () => {
1314+
const console = jasmine.createSpyObj('console', ['log'])
1315+
const driver = driverGlobal
1316+
const session = driver.session()
1317+
1318+
try {
1319+
// tag::geospatial-types-cartesian[]
1320+
// Creating a 2D point in Cartesian space
1321+
const point2d = new neo4j.types.Point(
1322+
7203, // SRID
1323+
1, // x
1324+
5.1 // y
1325+
)
1326+
1327+
// Or in 3D
1328+
const point3d = new neo4j.types.Point(
1329+
9157, // SRID
1330+
1, // x
1331+
-2, // y
1332+
3.1 // z
1333+
)
1334+
// end::geospatial-types-cartesian[]
1335+
1336+
const recordWith2dPoint = await echo(session, point2d)
1337+
const recordWith3dPoint = await echo(session, point3d)
1338+
1339+
// tag::geospatial-types-cartesian[]
1340+
1341+
// Reading a 2D point from a record
1342+
const fieldPoint2d = recordWith2dPoint.get('fieldName')
1343+
1344+
// Serializing
1345+
fieldPoint2d.toString() // Point{srid=7203, x=1.0, y=5.1}
1346+
1347+
// Accessing fields
1348+
console.log(
1349+
`Point with x=${fieldPoint2d.x}, y=${fieldPoint2d.y}, srid=${fieldPoint2d.srid}`
1350+
)
1351+
1352+
// Verifiying if object is a Pojnt
1353+
neo4j.isPoint(fieldPoint2d) // true
1354+
1355+
// Readning a 3D point from a record
1356+
const fieldPoint3d = recordWith3dPoint.get('fieldName')
1357+
1358+
// Serializing
1359+
fieldPoint3d.toString() // Point{srid=9157, x=1.0, y=-2.0, z=3.1}
1360+
1361+
// Accessing fields
1362+
console.log(
1363+
`Point with x=${fieldPoint3d.x}, y=${fieldPoint3d.y}, z=${fieldPoint3d.z}, srid=${fieldPoint3d.srid}`
1364+
)
1365+
1366+
// Verifiying if object is a Pojnt
1367+
neo4j.isPoint(fieldPoint3d) // true
1368+
// end::geospatial-types-cartesian[]
1369+
1370+
expect(neo4j.isPoint(fieldPoint2d)).toBe(true)
1371+
expect(fieldPoint2d.x).toBe(point2d.x)
1372+
expect(fieldPoint2d.y).toBe(point2d.y)
1373+
expect(fieldPoint2d.z).toBe(point2d.z)
1374+
expect(fieldPoint2d.toString()).toEqual(
1375+
'Point{srid=7203, x=1.0, y=5.1}'
1376+
)
1377+
expect(console.log).toHaveBeenCalledWith(
1378+
'Point with x=1, y=5.1, srid=7203'
1379+
)
1380+
expect(fieldPoint2d.srid.toInt()).toBe(Number(point2d.srid))
1381+
1382+
expect(neo4j.isPoint(fieldPoint3d)).toBe(true)
1383+
expect(fieldPoint3d.x).toBe(point3d.x)
1384+
expect(fieldPoint3d.y).toBe(point3d.y)
1385+
expect(fieldPoint3d.z).toBe(point3d.z)
1386+
expect(fieldPoint3d.toString()).toEqual(
1387+
'Point{srid=9157, x=1.0, y=-2.0, z=3.1}'
1388+
)
1389+
expect(console.log).toHaveBeenCalledWith(
1390+
'Point with x=1, y=-2, z=3.1, srid=9157'
1391+
)
1392+
expect(fieldPoint3d.srid.toInt()).toBe(Number(point3d.srid))
1393+
} finally {
1394+
await session.close()
1395+
}
1396+
})
1397+
1398+
it('WGS84', async () => {
1399+
const console = jasmine.createSpyObj('console', ['log'])
1400+
const driver = driverGlobal
1401+
const session = driver.session()
1402+
1403+
try {
1404+
// tag::geospatial-types-wgs84[]
1405+
// Creating a 2D point in WGS84 space
1406+
const point2d = new neo4j.types.Point(
1407+
4326, // SRID
1408+
1, // x
1409+
5.1 // y
1410+
)
1411+
1412+
// Or in 3D
1413+
const point3d = new neo4j.types.Point(
1414+
4979, // SRID
1415+
1, // x
1416+
-2, // y
1417+
3.1 // z
1418+
)
1419+
// end::geospatial-types-wgs84[]
1420+
1421+
const recordWith2dPoint = await echo(session, point2d)
1422+
const recordWith3dPoint = await echo(session, point3d)
1423+
1424+
// tag::geospatial-types-wgs84[]
1425+
1426+
// Reading a 2D point from a record
1427+
const fieldPoint2d = recordWith2dPoint.get('fieldName')
1428+
1429+
// Serializing
1430+
fieldPoint2d.toString() // Point{srid=4326, x=1.0, y=5.1}
1431+
1432+
// Accessing fields
1433+
console.log(
1434+
`Point with x=${fieldPoint2d.x}, y=${fieldPoint2d.y}, srid=${fieldPoint2d.srid}`
1435+
)
1436+
1437+
// Verifiying if object is a Pojnt
1438+
neo4j.isPoint(fieldPoint2d) // true
1439+
1440+
// Readning a 3D point from a record
1441+
const fieldPoint3d = recordWith3dPoint.get('fieldName')
1442+
1443+
// Serializing
1444+
fieldPoint3d.toString() // Point{srid=4979, x=1.0, y=-2.0, z=3.1}
1445+
1446+
// Accessing fields
1447+
console.log(
1448+
`Point with x=${fieldPoint3d.x}, y=${fieldPoint3d.y}, z=${fieldPoint3d.z}, srid=${fieldPoint3d.srid}`
1449+
)
1450+
1451+
// Verifiying if object is a Pojnt
1452+
neo4j.isPoint(fieldPoint3d) // true
1453+
// end::geospatial-types-wgs84[]
1454+
1455+
expect(neo4j.isPoint(fieldPoint2d)).toBe(true)
1456+
expect(fieldPoint2d.x).toBe(point2d.x)
1457+
expect(fieldPoint2d.y).toBe(point2d.y)
1458+
expect(fieldPoint2d.z).toBe(point2d.z)
1459+
expect(fieldPoint2d.toString()).toEqual(
1460+
'Point{srid=4326, x=1.0, y=5.1}'
1461+
)
1462+
expect(console.log).toHaveBeenCalledWith(
1463+
'Point with x=1, y=5.1, srid=4326'
1464+
)
1465+
expect(fieldPoint2d.srid.toInt()).toBe(Number(point2d.srid))
1466+
1467+
expect(neo4j.isPoint(fieldPoint3d)).toBe(true)
1468+
expect(fieldPoint3d.x).toBe(point3d.x)
1469+
expect(fieldPoint3d.y).toBe(point3d.y)
1470+
expect(fieldPoint3d.z).toBe(point3d.z)
1471+
expect(fieldPoint3d.toString()).toEqual(
1472+
'Point{srid=4979, x=1.0, y=-2.0, z=3.1}'
1473+
)
1474+
expect(console.log).toHaveBeenCalledWith(
1475+
'Point with x=1, y=-2, z=3.1, srid=4979'
1476+
)
1477+
expect(fieldPoint3d.srid.toInt()).toBe(Number(point3d.srid))
1478+
} finally {
1479+
await session.close()
1480+
}
1481+
})
1482+
})
1483+
1484+
async function echo (session, value) {
1485+
return await session.readTransaction(async tx => {
1486+
const result = await tx.run('RETURN $value as fieldName', {
1487+
value
1488+
})
1489+
return result.records[0]
1490+
})
1491+
}
1492+
})
13101493
})
13111494

13121495
function removeLineBreaks (string) {

0 commit comments

Comments
 (0)