Skip to content

Commit 227ae86

Browse files
authored
Add spatial types examples (#816)
1 parent 51c54fd commit 227ae86

File tree

1 file changed

+183
-0
lines changed

1 file changed

+183
-0
lines changed

packages/neo4j-driver/test/examples.test.js

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

13331516
function removeLineBreaks (string) {

0 commit comments

Comments
 (0)