<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
I wrote this setup guide in 2006. <br>
regards,<br>
Eduardo Patto Kanegae<br>
----------<br>
<h2>Installing ShapeLib and its tools</h2>
<p>&nbsp;&nbsp;&nbsp; This text will show you some steps for building and installing <a
 href="http://shapelib.maptools.org"
 mce_href="http://shapelib.maptools.org" target="_blank">ShapeLib</a>
and some usefull commands on a Linux machine.<br>
</p>
<blockquote dir="ltr" style="margin-right: 0px;"> <span class="small"><b>Notes:</b><br>
1. </span><span class="small"></span><span class="small">the
instructions of this guide were taken from installing on</span><span
 class="small"> <a href="http://www.suse.com/"
 mce_href="http://www.suse.com/" target="_blank">SuSE Linux 10.1</a>.<br>
2. </span><span class="small"></span><span class="small">the
installation instructions must be done with user<span
 style="font-weight: bold;"> root</span></span><span class="small"><span
 style="font-weight: bold;"></span><br>
3. </span><span class="small">all information here is provided without
warranty of any kind! Use it by your own risk.</span> </blockquote>
<h3>ShapeLib<br>
</h3>
<p>
&nbsp;&nbsp;&nbsp; <a href="http://shapelib.maptools.org"
 mce_href="http://shapelib.maptools.org" target="_blank">ShapeLib</a>
is a C library for development of applications to read/write ESRI
ShapeFiles. ShapeLib source tree also brings you very interesting
command line tools for shapefile handling. </p>
<p>
<font size="3"><i>Installing ShapeLib on Linux</i></font> </p>
<ul>
  <li>download ShapeLib source code from <a
 href="http://dl.maptools.org/dl/shapelib/"
 mce_href="http://dl.maptools.org/dl/shapelib/" target="_blank">http://dl.maptools.org/dl/shapelib/</a>
    <span style="background-color: rgb(255, 0, 0);"></span><br>
    <span class="S3">$ mkdir /usr/src/install/<br>
$ cd /usr/src/install/<br>
$ wget <a class="moz-txt-link-freetext" href="http://dl.maptools.org/dl/shapelib/shapelib-1.2.10.tar.gz">http://dl.maptools.org/dl/shapelib/shapelib-1.2.10.tar.gz</a><span
 style="background-color: rgb(255, 0, 0);"></span></span> </li>
  <li>extract <i>shapelib-1.2.10.tar.gz</i> file<br>
    <span class="S3">$ tar -zxvf shapelib-1.2.10.tar.gz <br>
$ cd shapelib-1.2.10/ </span></li>
  <li>for further information about ShapeLib please check <span
 style="font-style: italic;">README</span>, <i>README.tree</i>, <span
 style="font-style: italic;"></span><i>ChangeLog</i> and <span
 style="font-style: italic;">LICENSE.LGPL</span> files or take a look
at ShapeLib website. Example:<br>
    <span class="S3">$ less README</span> </li>
  <li>ShapeLib 1.2.10 package does not come with a <i>configure</i>
script but it has a ready makefile, so, next step: build it!<span
 class="S3"></span></li>
  <li><span class="S3">$ make all 2&gt;&amp;1 | tee make_all.log</span>
# start building process using <span style="font-style: italic;">Makefile</span>
definitions. This command will create the following tools<b>: dbfadd</b>,
    <b>dbfcreate</b>, <b>dbfdump</b>, <b>shpadd</b>, <b>shpcreate</b>,
    <b>shpdump</b> and <b>shprewind</b>. <span
 style="font-style: italic;"></span></li>
  <li><span class="S3">$ make lib 2&gt;&amp;1 | tee make_lib.log</span>
# builds the library to <i>libshp.so</i> .<span
 style="font-style: italic;"></span> </li>
  <li>next step is the compilation of shputils tool. If you try <b>make
shputils</b> you will see an error but it's very easy to fix it up:</li>
  <li>
    <ul>
      <li>$ make shputils 2&gt;&amp;1 | tee make_shputils.log #
compiler will tell you have errors at <b>277</b> line of <b>shputils.c</b>
file. <br>
      </li>
      <li>open <b>shputils.c</b> using a text editor( vi, mcedit,
pico, kate, gedit, ...). Example: <i>mcedit shputils.c</i></li>
      <li>at <b>277</b> line, find <font color="#ff0000"><i>exit()</i></font>
command and replace it using <font color="#0000ff"><i>exit(1)</i></font>.
Just the number "1" was missing inside parentesis.</li>
      <li>save the file( press F10 on <b>mcedit</b>). And then, repeat
the operation.</li>
      <li>$ make shputils clean # cleaning...<span class="S3"></span></li>
      <li>$ make shputils 2&gt;&amp;1 | tee make_shputils.log # now, if
everything was OK, you will see a file name 'shputils' ( no extensio )
at the current directory.<br>
      </li>
    </ul>
  </li>
  <li>and now, let's build another set of tools which is place under
'contrib/' folder:</li>
  <li>
    <ul>
      <li>$ cd contrib/</li>
      <li>if you also have downloaded the <b>shpdiff.c</b> file from
ShapeLib website, here is a little trick for building this tool with
the others under 'contrib/':</li>
      <li>a) copy shpdiff.c to this directory( '/contrib/' )</li>
      <ul>
        <li>b) edit <i>Makefile</i> and at line number <b>18</b> ( it
starts with 'all:' ) add a blank space and put a 'shpdiff' at the end
of this line. So, this line must appear like: <i>shpdxf shpproj
dbfinfo shpcentrd shpdata shpwkb dbfinfo dbfcat shpinfo shpfix shpcat
shpdiff</i></li>
        <li>c) at the line 35, just after shpinfo building commands,
press ENTER( to insert a new line) and add the following lines bellow:</li>
        <li><font color="#0000ff">shpdiff:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shpdiff.c $(SHPOBJ)</font></li>
        <li><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(CFLAGS) shpdiff.c
${SHPOBJ} $(LINKOPT) $(GEOOBJ) -o shpdiff</font></li>
        <li>d) now, let's come back to normal steps...<br>
        </li>
      </ul>
      <li>$ make all 2&gt;&amp;1 | tee make.log # an error will occur
at the line number <b>546</b> of <b>shpgeo.c </b>file. Edit this
file and find, at 546 line, this text:</li>
      <li><font color="#ff0000">(SHPObject*)</font> ppsC[cParts] =
SHPUnCompound ( psCShape, &amp;nextring );</li>
      <li>replace this line with:</li>
      <li><font color="#3300ff">ppsC[cParts] = SHPUnCompound (
psCShape, &amp;nextring );</font></li>
      <li>and then, try again:</li>
      <li><span class="S3">$ make clean </span># cleaning...</li>
      <li>$ make all 2&gt;&amp;1 | tee make.log # and now, if
everything was OK, you will see the following binaries at the current
folder: <b>dbfcat</b>, <b>dbfinfo</b>, <b>shpcat</b>, <b>shpcentrd</b>,
        <b>shpdata</b>, <b>shpdxf</b>, <b>shpfix</b>, <b>shpinfo</b>,
        <b>shpproj</b>, <b>shpwkb</b> and <b>shpdiff</b>.</li>
      <li>let's go up:</li>
      <li>$ cd ../<br>
      </li>
    </ul>
  </li>
  <li>next step will install the binaries :<br>
    <span class="S3">$ make lib_install 2&gt;&amp;1 | tee
make_lib_install.log</span> # library will be installed under <span
 style="font-style: italic;">/usr/local/lib/</span> folder. ShapeLib
Makefile does not have an 'install' rule, so, you will need to copy
them by hands:</li>
  <li>$ cp -v dbfadd dbfcreate dbfdump shpadd shpcreate shpdump
shprewind shputils /usr/local/bin</li>
  <li>$ cp -v contrib/dbfcat contrib/dbfinfo contrib/shpcat
contrib/shpcentrd contrib/shpdata contrib/shpdxf contrib/shpfix
contrib/shpinfo contrib/shpproj contrib/shpwkb contrib/shpdiff
/usr/local/bin<br>
  </li>
</ul>
<p>
After finishing these procedures, your shapelib library is installed
and you will also have the following commands: </p>
<ul>
  <li>dbfadd</li>
  <li>dbfcreate</li>
  <li>dbfdump</li>
  <li>shpadd</li>
  <li>shpcreate</li>
  <li>shpdump</li>
  <li>shprewind</li>
  <li>shputils</li>
  <li>dbfcat</li>
  <li>dbfinfo</li>
  <li>shpcat</li>
  <li>shpcentrd</li>
  <li>shpdata</li>
  <li>shpdxf</li>
  <li>shpfix</li>
  <li>shpinfo</li>
  <li>shpproj</li>
  <li>shpwkb</li>
  <li>shpdiff <br>
  </li>
</ul>
<span class="S3"></span>
<p>If your setup was ok, you are safe to remove
/usr/src/install/shapelib-1.2.10 folder.&nbsp; </p>
<h3>Additional information</h3>
<ul>
  <li><a href="http://shapelib.maptools.org"
 mce_href="http://shapelib.maptools.org" target="_blank">ShapeLib</a> -
official website. Take a look at documents available. </li>
</ul>
<br>
==== portuguese version ====<br>
<h2>Instalando a ShapeLib e utilit&aacute;rios</h2>
<p>&nbsp;&nbsp;&nbsp; O texto a seguir descreve um procedimento geral para a
compila&ccedil;&atilde;o e instala&ccedil;&atilde;o da biblioteca <a
 href="http://shapelib.maptools.org"
 mce_href="http://shapelib.maptools.org" target="_blank">ShapeLib</a> e
utilit&aacute;rios anexos em uma m&aacute;quina Linux.<br>
</p>
<blockquote dir="ltr" style="margin-right: 0px;"> <span class="small"><b>Notas:</b><br>
1. as instru&ccedil;&otilde;es deste guia foram elaboradas a partir de uma instala&ccedil;&atilde;o
realizada em um <a href="http://www.suse.com/"
 mce_href="http://www.suse.com/" target="_blank">SuSE Linux 10.1</a>.<br>
2. as instru&ccedil;&otilde;es devem ser executadas usando o usu&aacute;rio <span
 style="font-weight: bold;">root</span><br>
3. todas as instru&ccedil;&otilde;es deste guia s&atilde;o fornecidas sem qualquer garantia
de qualquer tipo! Utilize-as por sua conta e risco.</span> </blockquote>
<h3>ShapeLib<br>
</h3>
<p>
&nbsp;&nbsp;&nbsp; A <a href="http://shapelib.maptools.org"
 mce_href="http://shapelib.maptools.org" target="_blank">ShapeLib</a>
&eacute; uma biblioteca C para o desenvolvimento de aplicativos de
leitura/escrita de arquivos ESRI ShapeFile. O seu c&oacute;digo fonte cont&eacute;m
n&atilde;o somente a biblioteca mas tamb&eacute;m traz utilit&aacute;rios interessantes para
a manipula&ccedil;&atilde;o de shapefiles. </p>
<p>
<font size="3"><i>Instala&ccedil;&atilde;o da ShapeLib no Linux a partir do
c&oacute;digo-fonte</i></font> </p>
<p>
&nbsp;
</p>
<ul>
  <li>fa&ccedil;a o download do c&oacute;digo-fonte da ShapeLib de <a
 href="http://dl.maptools.org/dl/shapelib/"
 mce_href="http://dl.maptools.org/dl/shapelib/" target="_blank">http://dl.maptools.org/dl/shapelib/</a>
    <span style="background-color: rgb(255, 0, 0);"></span><br>
    <span class="S3">$ mkdir /usr/src/install/<br>
$ cd /usr/src/install/<br>
$ wget <a class="moz-txt-link-freetext" href="http://dl.maptools.org/dl/shapelib/shapelib-1.2.10.tar.gz">http://dl.maptools.org/dl/shapelib/shapelib-1.2.10.tar.gz</a><span
 style="background-color: rgb(255, 0, 0);"></span></span> </li>
  <li>extraia o arquivo <i>shapelib-1.2.10.tar.gz</i> <br>
    <span class="S3">$ tar -zxvf shapelib-1.2.10.tar.gz <br>
$ cd shapelib-1.2.10/ </span></li>
  <li>para informa&ccedil;&otilde;es detalhadas sobre a ShapeLib verifique os
arquivos <span style="font-style: italic;">README</span>, <i>README.tree</i>,
    <span style="font-style: italic;"></span><i>ChangeLog</i> e <span
 style="font-style: italic;">LICENSE.LGPL</span> que acompanham o
pacote ou consulte o site do projeto. Exemplo:<br>
    <span class="S3">$ less README</span>
# com o comando "less" voc&ecirc; pode navegar ( usando as teclass PageDown e
PageUp) pelo conte&uacute;do do arquivo. Tecle "q" para cancelar a execu&ccedil;&atilde;o do
"less" </li>
  <li>como o pacote n&atilde;o vem acompanhado de um script <i>configure</i>
e sim j&aacute; vem com o makefile pronto, o pr&oacute;ximo passo &eacute; a compila&ccedil;&atilde;o
propriamente dita.<span class="S3"></span></li>
  <li><span class="S3">$ make all 2&gt;&amp;1 | tee make_all.log</span>
# realiza o processo de compila&ccedil;&atilde;o a partir do arquivo <span
 style="font-style: italic;">Makefile</span>. Este comando gerar&aacute; os
utilit&aacute;rios <b>dbfadd</b>, <b>dbfcreate</b>, <b>dbfdump</b>, <b>shpadd</b>,
    <b>shpcreate</b>, <b>shpdump</b> e <b>shprewind</b>. Al&eacute;m disso,
a parte final do comando far&aacute; com que toda sa&iacute;da( mensagens) do
processo de compila&ccedil;&atilde;o sejam gravadas no arquivo <span
 style="font-style: italic;">make.log.</span></li>
  <li><span class="S3">$ make lib 2&gt;&amp;1 | tee make_lib.log</span>
# compila a biblioteca shapelib para <i>libshp.so</i> .<span
 style="font-style: italic;"></span> </li>
  <li>o
pr&oacute;ximo passo &eacute; a compila&ccedil;&atilde;o do utilit&aacute;rio shputils, cujo c&oacute;digo-fonte
desta vers&atilde;o 1.2.10 gerar&aacute; um pequeno erro na execu&ccedil;&atilde;o do make, mas a
corre&ccedil;&atilde;o &eacute; simples:</li>
  <li>
    <ul>
      <li>$ make shputils
2&gt;&amp;1 | tee make_shputils.log # ao executar este comando voc&ecirc;
ver&aacute; uma mensagem de erro do compilador acusando problemas na linha <b>277</b>
do arquivo <b>shputils.c</b>. <br>
      </li>
      <li>abra o arquivo <b>shputils.c</b> usando um editor qualquer(
vi, mcedit, pico, kate, gedit, ...). Exemplo: <i>mcedit shputils.c</i></li>
      <li>na linha <b>277</b> localize o comando <font color="#ff0000"><i>exit()</i></font>
e substitua-o por <font color="#0000ff"><i>exit(1)</i></font>. Ou
seja, apenas faltava o 1 entre os par&ecirc;nteses e portanto, n&atilde;o altere
NADA al&eacute;m disto.</li>
      <li>salve o arquivo e feche o editor. ( no <b>mcedit</b> aperte
F10). E execute a compila&ccedil;&atilde;o novamente.</li>
      <li>$ make shputils clean # processo de limpeza necess&aacute;rio antes
de uma recompila&ccedil;&atilde;o<span class="S3"></span></li>
      <li>$
make shputils 2&gt;&amp;1 | tee make_shputils.log # agora, tendo a
compila&ccedil;&atilde;o funcionado, voc&ecirc; ver&aacute; um arquivo 'shputils' ( sem extens&atilde;o )
no diret&oacute;rio.<br>
      </li>
    </ul>
  </li>
  <li>e agora vamos &agrave; compila&ccedil;&atilde;o de outros utilit&aacute;rios que ficam na
pasta 'contrib/':</li>
  <li>
    <ul>
      <li>$ cd contrib/</li>
      <li>se baixou tamb&eacute;m o <b>shpdiff.c</b>
do site da ShapeLib, segue um pequeno truque para compilar este
utilit&aacute;rio( que detecta diferen&ccedil;as entre shapefiles) junto com os
outros do diret&oacute;rio 'contrib/':</li>
      <li>a) copie o shpdiff.c neste diret&oacute;rio atual ( '/contrib/' )</li>
      <ul>
        <li>b) edite o arquivo <i>Makefile</i> e na linha <b>18</b> (
come&ccedil;a com 'all:' ) d&ecirc; um espa&ccedil;o e adicione 'shpdiff' no fim da linha.
Essa linha ent&atilde;o ficar&aacute; assim: <i>shpdxf shpproj dbfinfo shpcentrd
shpdata shpwkb dbfinfo dbfcat shpinfo shpfix shpcat shpdiff</i></li>
        <li>c) na linha 35, logo ap&oacute;s o trecho com comandos de
compila&ccedil;&atilde;o do shpinfo, d&ecirc; um ENTER e acrescente as duas linhas abaixo:</li>
        <li><font color="#0000ff">shpdiff:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; shpdiff.c $(SHPOBJ)</font></li>
        <li><font color="#0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(CFLAGS) shpdiff.c
${SHPOBJ} $(LINKOPT) $(GEOOBJ) -o shpdiff</font></li>
        <li>d) agora &eacute; s&oacute; continuar seguindo as instru&ccedil;&otilde;es a seguir...<br>
        </li>
      </ul>
      <li>$ make all 2&gt;&amp;1 | tee make.log # aqui novamente ocorre
um erro na linha <b>546</b> do arquivo <b>shpgeo.c</b>. Abra este
arquivo com um editor qualquer e localize, na linha 546, o trecho
abaixo:</li>
      <li><font color="#ff0000">(SHPObject*)</font> ppsC[cParts] =
SHPUnCompound ( psCShape, &amp;nextring );</li>
      <li>e ent&atilde;o troque esta linha por esta outra:</li>
      <li><font color="#3300ff">ppsC[cParts] = SHPUnCompound (
psCShape, &amp;nextring );</font></li>
      <li>e depois repita a compila&ccedil;&atilde;o:</li>
      <li><span class="S3">$ make clean </span># processo de limpeza
necess&aacute;rio antes de uma recompila&ccedil;&atilde;o</li>
      <li>$
make all 2&gt;&amp;1 | tee make.log # e agora se tudo funcionou OK,
como resultado voc&ecirc; ver&aacute; novos arquivos bin&aacute;rios neste diret&oacute;rio. Sendo
eles os comandos: <b>dbfcat</b>, <b>dbfinfo</b>, <b>shpcat</b>, <b>shpcentrd</b>,
        <b>shpdata</b>, <b>shpdxf</b>, <b>shpfix</b>, <b>shpinfo</b>,
        <b>shpproj</b>, <b>shpwkb</b> e <b>shpdiff</b>.</li>
      <li>tudo certo at&eacute; aqui, &eacute; hora de voltar ao diret&oacute;rio superior:</li>
      <li>$ cd ../<br>
      </li>
    </ul>
  </li>
  <li>se tudo correu bem at&eacute; aqui, o pr&oacute;ximo passo &eacute; a instala&ccedil;&atilde;o dos
arquivos bin&aacute;rios gerados nos diret&oacute;rios apropriados:<br>
    <span class="S3">$ make lib_install 2&gt;&amp;1 | tee
make_lib_install.log</span> # a biblioteca ser&aacute; instalada na pasta <span
 style="font-style: italic;">/usr/local/lib/</span>
. E como o Makefile da ShapeLib n&atilde;o possui uma regra 'install' pra
instalar os comandos utilit&aacute;rios, a solu&ccedil;&atilde;o &eacute; copi&aacute;-los manualmente
para um diret&oacute;rio que seja reconhecido como path do sistema:</li>
  <li>$ cp -v dbfadd dbfcreate dbfdump shpadd shpcreate shpdump
shprewind shputils /usr/local/bin</li>
  <li>$
cp -v contrib/dbfcat contrib/dbfinfo contrib/shpcat contrib/shpcentrd
contrib/shpdata contrib/shpdxf contrib/shpfix contrib/shpinfo
contrib/shpproj contrib/shpwkb contrib/shpdiff /usr/local/bin<br>
  </li>
</ul>
<br>
<p>
Lembre-se que para refer&ecirc;ncia posterior voc&ecirc; poder&aacute; salvar os arquivos
.log gerados pelos comandos supra citados. </p>
<p>
Conclu&iacute;da a sua instala&ccedil;&atilde;o, al&eacute;m da biblioteca instalada, voc&ecirc; ter&aacute; a
sua disposi&ccedil;&atilde;o os seguintes utilit&aacute;rios: </p>
<ul>
  <li>dbfadd</li>
  <li>dbfcreate</li>
  <li>dbfdump</li>
  <li>shpadd</li>
  <li>shpcreate</li>
  <li>shpdump</li>
  <li>shprewind</li>
  <li>shputils</li>
  <li>dbfcat</li>
  <li>dbfinfo</li>
  <li>shpcat</li>
  <li>shpcentrd</li>
  <li>shpdata</li>
  <li>shpdxf</li>
  <li>shpfix</li>
  <li>shpinfo</li>
  <li>shpproj</li>
  <li>shpwkb</li>
  <li>shpdiff <br>
  </li>
</ul>
<span class="S3"></span>
<p>Se a instala&ccedil;&atilde;o correu sem problemas voc&ecirc; poder&aacute; excluir o diret&oacute;rio
/usr/src/install/shapelib-1.2.10 .&nbsp; </p>
<h3>Informa&ccedil;&otilde;es adicionais</h3>
<ul>
  <li><a href="http://shapelib.maptools.org"
 mce_href="http://shapelib.maptools.org" target="_blank">ShapeLib</a> -
site oficial. Verifique a documenta&ccedil;&atilde;o dispon&iacute;vel no site. </li>
</ul>
</body>
</html>