func main() {
runRecord_Entry(shared.Client)
runOptimal_Location(shared.Client)
log.Println("Application ran successfully GrandMaster")
}
func runRecord_Entry(client *as.Client) {
// define a client to connect to
client, err := as.NewClient("127.0.0.1",3000)
PanicOnError(err)
key, err := as.NewKey("jolar","jolardest","dert")
PanicOnError(err)
binName := "gjsn"
// queries only work on indices
client.DropIndex("writepolicy", "jolar", "jolardest", "set+binName")
idxTask, err := client.CreateIndex("writepolicy", "jolar", "jolardest","set+binName","gjsn","as.GEO2DSPHERE")
// The Data
points := []as.GeoJSONValue{
`{
"type": "feature",
"geometry": {
"type": "Point",
"coordinates": [13.009318762,80.003157854]
},
"properties": {
"name": "workshop block",
"Demand": "49589",
"capacity":"808"}
}`}
// define some bins
ptsb:= points
bin := as.NewBin(binName, as.NewGeoJSONValue(points))
// write the bins
client.PutBins(shared.WritePolicy, key, bin)
record, err := client.Get(shared.Policy, key, binName)
shared.PanicOnError(err)
fmt.Println("The records are wriiten !!")
}
This is a server error. Your GeoJson is malformed. "type": "feature"
should be "type": "Feature"
. (Case-Sensitive).
Here is the full example:
package main
import (
"fmt"
"log"
"time"
as "github.com/aerospike/aerospike-client-go"
)
func main() {
runRecord_Entry()
log.Println("Application ran successfully GrandMaster")
}
func runRecord_Entry() {
// define a client to connect to
client, err := as.NewClient("vmu1604", 3000)
if err != nil {
log.Fatalln(err)
}
key, err := as.NewKey("test", "jolardest", "dert")
if err != nil {
log.Fatalln(err)
}
binName := "gjsn"
// queries only work on indices
client.DropIndex(nil, "test", "jolardest", "set+binName")
idxTask, err := client.CreateIndex(nil, "test", "jolardest", "set+binName", "gjsn", as.GEO2DSPHERE)
if err != nil {
log.Fatalln(err)
}
<-idxTask.OnComplete()
time.Sleep(time.Second)
// The Data
point := as.GeoJSONValue(`{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [13.009318762,80.003157854]
},
"properties": {
"name": "workshop block",
"Demand": "49589",
"capacity":"808"
}
}`)
// define some bins
bin := as.NewBin(binName, point)
// write the bins
err = client.PutBins(nil, key, bin)
if err != nil {
log.Fatalln(err)
}
record, err := client.Get(nil, key, binName)
if err != nil {
log.Fatalln(err)
}
fmt.Println("The record is written:", record.Bins)
}
Thanks a lot, It worked now !!
Hey but still im unnable to enter collection of data,
`{"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry" : {
"type" : "Point",
"coordinates": [13.009318762,80.003157854]
},
"properties" : {
"name" :"Work shop",
"demand":"49589",
"capacity":"4231"
}
},
{
"type": "Feature",
"geometry" : {
"type" : "Point",
"coordinates": [13.00961276, 80.003422154]
},
"properties" : {
"name" :"main block",
"demand":"247859",
"capacity":"2974"
}
}
{
"type": "Feature",
"geometry" : {
"type" : "Point",
"coordinates": [13.009318762,80.003157854]
},
"properties" : {
"name" :"acadamics",
"demand":"49589",
"capacity":"4231"
}
},
{
"type": "Feature",
"geometry" : {
"type" : "Point",
"coordinates": [13.00961276, 80.003422154]
},
"properties" : {
"name" :"i blk",
"demand":"247879",
"capacity":"174"
}
}
]
}`
like this instead of a single point This is the out put im getting, go run zarpin.go 2019/03/27 20:53:09 hosts: 127.0.0.1 2019/03/27 20:53:09 port: 3000 2019/03/27 20:53:09 namespace: test 2019/03/27 20:53:09 set: testset 2019/03/27 20:53:09 Invalid GeoJSON on insert/update exit status 1
Thanks in advance
Your GeoJSON is invalid. In this case, it looks like you have forgotten one comma after the second feature.
Yea fixed it, still the same error persists. Checked the format with “Obsolete”
Then you have to take this up in the server section of the forum.
This is how you do it:
package main
import (
"log"
as "github.com/aerospike/aerospike-client-go"
)
func main() {
// define a client to connect to
client, err := as.NewClient("vmu1804", 3000)
PanicOnError(err)
// The Data
bins := []as.BinMap{
{
"name": "Work shop",
"demand": "49589",
"capacity": "4231",
"coord": as.GeoJSONValue(`{"type" : "Point", "coordinates": [13.009318762,80.003157854]}`),
},
{
"name": "main block",
"demand": "247859",
"capacity": "2974",
"coord": as.GeoJSONValue(`{"type" : "Point", "coordinates": [13.00961276, 80.003422154]}`),
},
{
"name": "Work shop",
"demand": "49589",
"capacity": "4231",
"coord": as.GeoJSONValue(`{"type" : "Point", "coordinates": [13.009318762,80.003157854]}`),
},
{
"name": "main block",
"demand": "247859",
"capacity": "2974",
"coord": as.GeoJSONValue(`{"type" : "Point", "coordinates": [13.00961276, 80.003422154]}`),
},
}
// write the records to the database
for i, b := range bins {
// define some bins
key, _ := as.NewKey("test", "testset", i)
err = client.Put(nil, key, b)
PanicOnError(err)
}
log.Println("The records are written !!")
// queries only work on indices; you should create the index only once
// The index is created on the namespace, set and bin that should be indexed.
client.CreateIndex(nil, "test", "testset", "ma_geo_index", "coord", as.GEO2DSPHERE)
stm := as.NewStatement("test", "testset")
// there are multiple different types of filters. You can find the list in the docs.
stm.SetFilter(as.NewGeoWithinRadiusFilter("coord", float64(13.009318762), float64(80.003157854), float64(50000)))
recordset, err := client.Query(nil, stm)
PanicOnError(err)
count := 0
for res := range recordset.Results() {
PanicOnError(res.Err)
log.Println(res.Record.Bins)
count++
}
// 1 region should be found
log.Println("Records found: ", count)
log.Println("Application ran successfully GrandMaster")
}
func PanicOnError(err error) {
if err != nil {
log.Fatalln(err)
}
}