Done!

Cheers

Hernán

El sáb., 6 jun. 2020 a las 3:17, Stéphane Ducasse (<
stephane.duca...@inria.fr>) escribió:

> Please add this to the readme :)
>
>
> On 5 Jun 2020, at 23:19, Hernán Morales Durand <hernan.mora...@gmail.com>
> wrote:
>
>
>
> El vie., 5 jun. 2020 a las 9:27, Baveco, Hans (<hans.bav...@wur.nl>)
> escribió:
>
>> Well, it appears that simple direct downloading does not download the
>> real shapefile. Taking care to actually get a shapefile, the result loads
>> without problems.
>>
>> ne_110m_populated_places.shp is a PointShape with 243 shapes (points). If
>> you display it on a Form (#displayMorphic) you won’t see much (243 hardly
>> visible dots).
>>
>>
>>
>
> I checked and my previous download method was completely wrong. Now
> switching from ZnEasy to ZnClient to download and it works nicely:
>
>  | shpE legend urlRoot urlESRIFilePrefix urlESRIFileShp urlPath response
> fileRef |
>
> " Download Shapefile resources "
> urlRoot := '
> https://github.com/nvkelso/natural-earth-vector/blob/master/110m_cultural/
> '.
> urlESRIFilePrefix := 'ne_110m_populated_places'.
> urlESRIFileShp := urlESRIFilePrefix , '.shp'.
> urlPath := urlRoot , urlESRIFilePrefix.
>
> #('.shx' '.dbf' '.shp' '.cpg' '.prj') do: [ : ext |
>   ZnClient new
>    url: (urlPath , ext) asZnUrl;
>    queryAt: 'raw' put: 'true';
>    numberOfRetries: 2;
>    enforceHttpSuccess: true;
>    downloadTo: urlESRIFilePrefix , ext;
>    get ].
>
> " Load and display it in Morphic "
> shpE := ShapeEnsemble fromFile: urlESRIFileShp.
> " List data fields "
> shpE dataFields inspect.
> " List all shape records "
> shpE shapeRecords inspect.
> " Set the current attribute "
> shpE attribute: 'NAME'.
>
> legend := ColorLegend mapValuesToRandom: shpE valuesOfCurrentAttribute.
> shpE legend: legend.
>
> shpE displayMorphic.
>
>
>> With an application for vector graphics (Roassal?) that can read &
>> display the vector data we would get much nicer maps...
>>
>>
>>
>> Hans
>>
>>
>>
>> *From:* Baveco, Hans <hans.bav...@wur.nl>
>> *Sent:* vrijdag 5 juni 2020 12:44
>> *To:* Any question about pharo is welcome <pharo-users@lists.pharo.org>
>> *Subject:* [Pharo-users] shape file reading
>>
>>
>>
>> Hi Hernan
>>
>>
>>
>> I downloaded this shapefile directly via the browser. Indeed it won’t
>> load, the type of shape file returned is
>>
>> self longAt: 33 bigEndian: false -> 577660194
>>
>>
>>
>>
>>
>> where it should have answered an Integer between 0 and 31
>>
>>
>>
>> shapeType
>>
>>          "position 32, Integer between 0 and 31, Little Endian"
>>
>>
>>
>>          ^shpBytes longAt: 33 bigEndian: false
>>
>>
>>
>>
>>
>> No idea what could be the cause – apparently the header of the file (the
>> first 100 bytes) is not ok...
>>
>>
>>
>> Hans
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> You mean some types are missing? Because I get this error when I try to
>> read some SHP files: "Types > 20 are not yet accounted for"
>>
>>
>>
>> I wrote this script to reproduce:
>>
>>
>>
>>  | shpE legend urlRoot urlESRIFilePrefix urlESRIFileShp urlPath response
>> fileRef |
>>
>> " Download Shapefile resources "
>> urlRoot := '
>> https://github.com/nvkelso/natural-earth-vector/blob/master/110m_cultural/
>> '.
>> urlESRIFilePrefix := 'ne_110m_populated_places'.
>> urlESRIFileShp := urlESRIFilePrefix , '.shp'.
>> urlPath := urlRoot , urlESRIFilePrefix.
>>
>> #('.shx' '.dbf' '.shp') do: [ : ext |
>> | url |
>> url :=  (urlPath , ext , '?raw=true') asZnUrl.
>> (response := ZnEasy get: url) isSuccess
>> ifFalse: [ self error: 'Cannot download file' ].
>> fileRef := FileSystem disk workingDirectory / (urlESRIFilePrefix , ext).
>> fileRef writeStreamDo: [ : stream |
>> stream nextPutAll: ((ZnByteEncoder newForEncoding: 'koi8r') decodeBytes:
>> response contents ) ] ].
>>
>>
>>
>> Once downloaded:
>>
>>
>>
>> | urlESRIFilePrefix urlESRIFileShp shpE |
>> urlESRIFilePrefix := 'ne_110m_populated_places'.
>> urlESRIFileShp := urlESRIFilePrefix , '.shp'.
>>
>> " Load and display it in Morphic "
>> shpE := ShapeEnsemble fromFile: urlESRIFileShp.
>>
>>
>>
>> Maybe it's related with the fact they are encoded as koi8r?
>>
>> I checked with Zinc downloading first from the browser:
>>
>>
>>
>> | shpFile |
>>
>> shpFile := 'ne_110m_admin_0_countries.shp' asFileReference.
>> [ shpFile binaryReadStreamDo: [ : in |
>>                 (ZnCharacterEncoder detectEncoding: in upToEnd)
>> identifier ] ]
>>         on: ZnCharacterEncodingError
>>         do: [ nil ].
>>
>>
>>
>>
>>
>> Cheers,
>>
>>
>>
>> Hernán
>>
>>
>>
>>
>>
>>
> --------------------------------------------
> Stéphane Ducasse
> http://stephane.ducasse.free.fr / http://www.pharo.org
> 03 59 35 87 52
> Assistant: Aurore Dalle
> FAX 03 59 57 78 50
> TEL 03 59 35 86 16
> S. Ducasse - Inria
> 40, avenue Halley,
> Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
> Villeneuve d'Ascq 59650
> France
>
>

Reply via email to