Hi David, you're correct that this is a JSON syntax error. I used this
handy tool https://jsonlint.com/ to test it. It also formats the code in a
way that makes it easier to visualize JSON syntax.

Ultimately, the change that needs to happen is moving the ] that is near
the very end to a position right before the "config" section and adding a ,
after it. So the following is valid JSON:

{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I3",
"KML_FOLDER": "Arcos de Valdevez"
},
"geometry": {
"type": "Point",
"coordinates": [-8.450217, 41.938804]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M",
"KML_FOLDER": "Arcos de Valdevez"
},
"geometry": {
"type": "Point",
"coordinates": [-8.343963, 41.870299]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M",
"KML_FOLDER": "Arcos de Valdevez"
},
"geometry": {
"type": "Point",
"coordinates": [-8.389271, 41.868684]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I1",
"KML_FOLDER": "Caminha"
},
"geometry": {
"type": "Point",
"coordinates": [-8.832159, 41.873065]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M0",
"KML_FOLDER": "Caminha"
},
"geometry": {
"type": "Point",
"coordinates": [-8.838441, 41.801253]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M0",
"KML_FOLDER": "Caminha"
},
"geometry": {
"type": "Point",
"coordinates": [-8.841388, 41.809651]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M0",
"KML_FOLDER": "Caminha"
},
"geometry": {
"type": "Point",
"coordinates": [-8.787310, 41.906306]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M0",
"KML_FOLDER": "Caminha"
},
"geometry": {
"type": "Point",
"coordinates": [-8.850757, 41.809936]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_V1",
"KML_FOLDER": "Melgaço"
},
"geometry": {
"type": "Point",
"coordinates": [-8.098310, 42.070975]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M1",
"KML_FOLDER": "Melgaço"
},
"geometry": {
"type": "Point",
"coordinates": [-8.279876, 42.092524]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_M1",
"KML_FOLDER": "Monção"
},
"geometry": {
"type": "Point",
"coordinates": [-8.452002, 42.027202]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_V0",
"KML_FOLDER": "Ponte da Barca"
},
"geometry": {
"type": "Point",
"coordinates": [-8.251466, 41.840543]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I2",
"KML_FOLDER": "Paredes de Coura"
},
"geometry": {
"type": "Point",
"coordinates": [-8.627916, 41.873977]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_C",
"KML_FOLDER": "Ponte de Lima"
},
"geometry": {
"type": "Point",
"coordinates": [-8.560746, 41.795792]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I",
"KML_FOLDER": "Ponte de Lima"
},
"geometry": {
"type": "Point",
"coordinates": [-8.605898, 41.780252]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I",
"KML_FOLDER": "Ponte de Lima"
},
"geometry": {
"type": "Point",
"coordinates": [-8.611713, 41.715959]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I",
"KML_FOLDER": "Ponte de Lima"
},
"geometry": {
"type": "Point",
"coordinates": [-8.612457, 41.694275]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I",
"KML_FOLDER": "Ponte de Lima"
},
"geometry": {
"type": "Point",
"coordinates": [-8.607588, 41.694813]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I",
"KML_FOLDER": "Ponte de Lima"
},
"geometry": {
"type": "Point",
"coordinates": [-8.643646, 41.792144]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_V",
"KML_FOLDER": "Valença"
},
"geometry": {
"type": "Point",
"coordinates": [-8.639526, 42.002488]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I0",
"KML_FOLDER": "Valença"
},
"geometry": {
"type": "Point",
"coordinates": [-8.588610, 41.997460]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_E",
"KML_FOLDER": "Vila Nova de Cerveira"
},
"geometry": {
"type": "Point",
"coordinates": [-8.739175, 41.952262]
}
},
{
"type": "Feature",
"properties": {
"KML_STYLE": "msn_I2",
"KML_FOLDER": "Vila Nova de Cerveira"
},
"geometry": {
"type": "Point",
"coordinates": [-8.697189, 41.888439]
}
}
],
"config": {
"provider": {
"class": "TileStache.Goodies.VecTiles:Provider",
"kwargs": {
"dbinfo": {
"host": "localhost",
"user": "postgres",
"password": "XXXXXXX",
"database": "arches",
"port": "5432"
},
"simplify": 0.5,
"queries": [
"select gid as __id__, name, st_asgeojson(geom) as geojson,
st_transform(geom, 900913) as __geometry__ from arqueologia"
]
}
},
"allowed origin": "*",
"compress": true,
"write cache": false
}
}

However, I'm unsure what the purpose of the "features" section... Are those
additional points that you would like to show in addition to the contents
of arqueologia? If so, I think you'll need to accomplish that in a
different way. As described in the docs (which, apologies, but that section
has move here: http://arches4.readthedocs.io/en/stable/
creating-new-map-layers/ with the recent 4.1 release) there should only be
three main sections of of the JSON contents:

{
    "type" :   ## This value should be "raster" or "vector".
    "layers" : ## This is a mapbox.js layer definition which defines the style
               ## of the layer and links the source name with the layer name.
    "config" : ## This is the tileserver configuration that will be used by
               ## TileStache. Refer to TileStache docs and place the entire
               ## "provider" section into this "config" section.}

In your case, I believe it would look like this:

{
    "type": "vector",
    "layers": [{
        "id": "arqueologia",
        "type": "line",
        "source": "arqueologia",
        "source-layer": "arqueologia",
        "layout": {
            "visibility": "visible"
        },
        "paint": {
            "line-width": 2,
            "line-color": "rgb(37, 58, 241)"
        }
    }],
    "config": {
        "provider": {
            "class": "TileStache.Goodies.VecTiles:Provider",
            "kwargs": {
                "dbinfo": {
                    "host": "localhost",
                    "user": "postgres",
                    "password": "XXXXXX",
                    "database": "arches",
                    "port": "5432"
                },
                "simplify": 0.5,
                "queries": [                   "select gid as __id__,
name, st_asgeojson(geom) as geojson, st_transform(geom, 900913) as
__geometry__ from arqueologia"
                ]
            }
        },
        "allowed origin": "*",
        "compress": true,
        "write cache": false
    }}

I've been trying this out with a local postgis table of my own (not rivers)
and have some more notes from the experience:

   - To be on the safe side, I put the name of my postgis table in the id,
   source, and source-layer properties of the first entry of the
layers section.
   I think a couple of these properties get overwritten on load and therefore
   are not necessary, but I just wanted to follow the rivers example.
   - Inside the layer definition, type and paint must be coordinated well.
   For type, the options are fill, line, symbol, circle, fill-extrusion,
   raster, or background. In my case, I was trying out a polygon layer, so
   I needed fill. For points, I'm assuming symbol or circle would work..
   - Once the layer type is set, then you have to use to correct paint
   properties to fit that type. This is where the Mapbox GL JS style spec is
   necessary, https://www.mapbox.com/mapbox-gl-js/style-spec/. If you are
   styling a symbol layer, then you are only able to use the paint properties
   listed here https://www.mapbox.com/mapbox-gl-js/style-spec/#layers-symbol.
   Once the layer is loaded however, you can further edit its style in the
   Layer Manager (use the Service Styling tab).
   - In the queries section, note that there a 3 different column names in
   the example, and the column names in your own table may be different. In my
   case geom and name did indeed exist, however I needed to change gid to id
   .

Hope that helps you out a bit!

Adam



On Mon, Jan 29, 2018 at 8:04 AM, David Lopes <cim...@gmail.com> wrote:

> Hi Adam,
>
> It's me again regarding the same subject.
>
> I've already successfully loaded the sql files to the database (arches)
> and executed the python commad for the json files but I get the following
> error message:
>
>
> operation: add_tileserver_layer
> package: arches
> Traceback (most recent call last):
>   File "manage.py", line 27, in <module>
>     execute_from_command_line(sys.argv)
>   File 
> "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages/django/core/
>                 management/__init__.py", line 364, in
> execute_from_command_line
>     utility.execute()
>   File 
> "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages/django/core/
>                 management/__init__.py", line 356, in execute
>     self.fetch_command(subcommand).run_from_argv(self.argv)
>   File 
> "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages/django/core/
>                 management/base.py", line 283, in run_from_argv
>     self.execute(*args, **cmd_options)
>   File 
> "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages/django/core/
>                 management/base.py", line 330, in execute
>     output = self.handle(*args, **options)
>   File "/home/ubuntu/Projects/arches/arches/management/commands/packages.py",
> li                  ne 188, in handle
>     self.add_tileserver_layer(options['layer_name'],
> options['mapnik_xml_path'],                   options['layer_icon'],
> options['is_basemap'], options['tile_config_path'])
>   File "/home/ubuntu/Projects/arches/arches/management/commands/packages.py",
> li                  ne 907, in add_tileserver_layer
>     config_data = json.load(content)
>   File "/usr/lib/python2.7/json/__init__.py", line 291, in load
>     **kw)
>   File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
>     return _default_decoder.decode(s)
>   File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
>     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
>   File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode
>     obj, end = self.scan_once(s, idx)
> ValueError: Expecting , delimiter: line 51 column 2 (char 3923)
>
> Since I am almost sure it has something to do with the sintax of the json
> file (I am not a programmer), I join the file (with no password) in the
> hope that you can help me:
>
> {
> "type": "FeatureCollection",
> "features": [
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I3", "KML_FOLDER":
> "Arcos de Valdevez" }, "geometry": { "type": "Point", "coordinates": [
> -8.450217, 41.938804 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M", "KML_FOLDER":
> "Arcos de Valdevez" }, "geometry": { "type": "Point", "coordinates": [
> -8.343963, 41.870299 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M", "KML_FOLDER":
> "Arcos de Valdevez" }, "geometry": { "type": "Point", "coordinates": [
> -8.389271, 41.868684 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I1", "KML_FOLDER":
> "Caminha" }, "geometry": { "type": "Point", "coordinates": [ -8.832159,
> 41.873065 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M0", "KML_FOLDER":
> "Caminha" }, "geometry": { "type": "Point", "coordinates": [ -8.838441,
> 41.801253 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M0", "KML_FOLDER":
> "Caminha" }, "geometry": { "type": "Point", "coordinates": [ -8.841388,
> 41.809651 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M0", "KML_FOLDER":
> "Caminha" }, "geometry": { "type": "Point", "coordinates": [ -8.787310,
> 41.906306 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M0", "KML_FOLDER":
> "Caminha" }, "geometry": { "type": "Point", "coordinates": [ -8.850757,
> 41.809936 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_V1", "KML_FOLDER":
> "Melgaço" }, "geometry": { "type": "Point", "coordinates": [ -8.098310,
> 42.070975 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M1", "KML_FOLDER":
> "Melgaço" }, "geometry": { "type": "Point", "coordinates": [ -8.279876,
> 42.092524 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_M1", "KML_FOLDER":
> "Monção" }, "geometry": { "type": "Point", "coordinates": [ -8.452002,
> 42.027202 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_V0", "KML_FOLDER":
> "Ponte da Barca" }, "geometry": { "type": "Point", "coordinates": [
> -8.251466, 41.840543 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I2", "KML_FOLDER":
> "Paredes de Coura" }, "geometry": { "type": "Point", "coordinates": [
> -8.627916, 41.873977 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_C", "KML_FOLDER":
> "Ponte de Lima" }, "geometry": { "type": "Point", "coordinates": [
> -8.560746, 41.795792 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I", "KML_FOLDER":
> "Ponte de Lima" }, "geometry": { "type": "Point", "coordinates": [
> -8.605898, 41.780252 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I", "KML_FOLDER":
> "Ponte de Lima" }, "geometry": { "type": "Point", "coordinates": [
> -8.611713, 41.715959 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I", "KML_FOLDER":
> "Ponte de Lima" }, "geometry": { "type": "Point", "coordinates": [
> -8.612457, 41.694275 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I", "KML_FOLDER":
> "Ponte de Lima" }, "geometry": { "type": "Point", "coordinates": [
> -8.607588, 41.694813 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I", "KML_FOLDER":
> "Ponte de Lima" }, "geometry": { "type": "Point", "coordinates": [
> -8.643646, 41.792144 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_V", "KML_FOLDER":
> "Valença" }, "geometry": { "type": "Point", "coordinates": [ -8.639526,
> 42.002488 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I0", "KML_FOLDER":
> "Valença" }, "geometry": { "type": "Point", "coordinates": [ -8.588610,
> 41.997460 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_E", "KML_FOLDER":
> "Vila Nova de Cerveira" }, "geometry": { "type": "Point", "coordinates": [
> -8.739175, 41.952262 ] } }
> ,
> { "type": "Feature", "properties": { "KML_STYLE": "msn_I2", "KML_FOLDER":
> "Vila Nova de Cerveira" }, "geometry": { "type": "Point", "coordinates": [
> -8.697189, 41.888439 ] } }
>
>
> "config": {
> "provider": {
> "class": "TileStache.Goodies.VecTiles:Provider",
> "kwargs": {
> "dbinfo": {
> "host": "localhost",
> "user": "postgres",
> "password": "XXXXXXX",
> "database": "arches",
> "port": "5432"
> },
> "simplify": 0.5,
> "queries": [
> "select gid as __id__, name, st_asgeojson(geom) as geojson,
> st_transform(geom, 900913) as __geometry__ from arqueologia"
> ]
> }
> },
> "allowed origin": "*",
> "compress": true,
> "write cache": false
> }
>
>
>
> ]
> }
>
>
>  Once again thanks,
>
>
>
>
>
> sexta-feira, 19 de Janeiro de 2018 às 15:18:47 UTC, Adam Cox escreveu:
>>
>> Based on the example here http://arches4.readthedoc
>> s.io/en/stable/managing-map-layers/#tileserver-layers, you can see that
>> the db info is in the "config" section of the .json file (if you are making
>> a layer based on a postgis table). It occurs to me now that you should be
>> wary of sharing config files such as this, as they would likely contain the
>> credentials to your Arches pg database (unless you are pulling from another
>> database... either way, you shouldn't share those credentials...).
>>
>> Adam
>>
>> On Fri, Jan 19, 2018 at 9:13 AM, David Lopes <cim...@gmail.com> wrote:
>>
>>> Adam,
>>>
>>> One more question: the .json file requires a few lines connecting with
>>> the database, right?
>>>
>>> Best regards.
>>>
>>>
>>>
>>> quinta-feira, 18 de Janeiro de 2018 às 18:04:17 UTC, Adam Cox escreveu:
>>>>
>>>> FYI I just tested loading the sql from that repo example and then
>>>> loading the tile layer with the config file that's in there, and the layer
>>>> loaded correctly.
>>>>
>>>> On Thu, Jan 18, 2018 at 9:59 AM, Adam Cox <mr.ad...@gmail.com> wrote:
>>>>
>>>>> Hi David, are you using a config file from the repo, or have you made
>>>>> a new one? From looking at the error, it seems like the config file you 
>>>>> are
>>>>> using may have [ ] in the outermost position instead of { }, but the 
>>>>> config
>>>>> files in that repo do look fine to me.
>>>>>
>>>>> Adam
>>>>>
>>>>> On Thu, Jan 18, 2018 at 9:13 AM, David Lopes <cim...@gmail.com> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I've been trying to add .sql and .json files to the data base without
>>>>>> success (https://github.com/legiongis/arches4-geo-examples)
>>>>>>
>>>>>> I get the following message:
>>>>>>
>>>>>> operation: add_tileserver_layer
>>>>>> package: arches
>>>>>> Traceback (most recent call last):
>>>>>>   File "manage.py", line 27, in <module>
>>>>>>     execute_from_command_line(sys.argv)
>>>>>>   File "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages
>>>>>> /django/core/management/__init__.py", line 364, in
>>>>>> execute_from_command_line
>>>>>>     utility.execute()
>>>>>>   File "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages
>>>>>> /django/core/management/__init__.py", line 356, in execute
>>>>>>     self.fetch_command(subcommand).run_from_argv(self.argv)
>>>>>>   File "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages
>>>>>> /django/core/management/base.py", line 283, in run_from_argv
>>>>>>     self.execute(*args, **cmd_options)
>>>>>>   File "/home/ubuntu/Projects/ENV/local/lib/python2.7/site-packages
>>>>>> /django/core/management/base.py", line 330, in execute
>>>>>>     output = self.handle(*args, **options)
>>>>>>   File 
>>>>>> "/home/ubuntu/Projects/arches/arches/management/commands/packages.py",
>>>>>> line 188, in handle
>>>>>>     self.add_tileserver_layer(options['layer_name'],
>>>>>> options['mapnik_xml_path'], options['layer_icon'], options['is_basemap'],
>>>>>> options['tile_config_path'])
>>>>>>   File 
>>>>>> "/home/ubuntu/Projects/arches/arches/management/commands/packages.py",
>>>>>> line 908, in add_tileserver_layer
>>>>>>     config = config_data["config"]
>>>>>> TypeError: list indices must be integers, not str
>>>>>>
>>>>>>
>>>>>> Can you tell what's wrong?
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> --
>>>>>> -- To post, send email to arches...@googlegroups.com. To
>>>>>> unsubscribe, send email to archesprojec...@googlegroups.com. For
>>>>>> more information, visit https://groups.google.com/d/fo
>>>>>> rum/archesproject?hl=en
>>>>>> ---
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Arches Project" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to archesprojec...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>> --
>>> -- To post, send email to arches...@googlegroups.com. To unsubscribe,
>>> send email to archesprojec...@googlegroups.com. For more information,
>>> visit https://groups.google.com/d/forum/archesproject?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "Arches Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to archesprojec...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>> --
> -- To post, send email to archesproject@googlegroups.com. To unsubscribe,
> send email to archesproject+unsubscr...@googlegroups.com. For more
> information, visit https://groups.google.com/d/forum/archesproject?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Arches Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to archesproject+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
-- To post, send email to archesproject@googlegroups.com. To unsubscribe, send 
email to archesproject+unsubscr...@googlegroups.com. For more information, 
visit https://groups.google.com/d/forum/archesproject?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Arches Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to archesproject+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to