<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-38486525</id><updated>2012-01-31T11:40:40.800-03:00</updated><category term='GIS'/><category term='PHP'/><category term='Google Maps'/><category term='Programação'/><category term='SIG'/><category term='PostGIS'/><category term='Atlas Digital'/><category term='GRASS'/><category term='Treinamentos'/><category term='SQL'/><category term='SRH'/><category term='GvSIG'/><category term='CodeIgniter'/><category term='OGR'/><category term='GDAL'/><category term='FOSSGIS Brasil'/><category term='AESA'/><category term='Mapserver'/><category term='pmapper'/><category term='Alov Map'/><title type='text'>Prof. Marcello Benigno</title><subtitle type='html'>Professor e consultor nas áreas de Linux, GIS e Webmapping</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-38486525.post-3247636437856968885</id><published>2012-01-31T10:03:00.016-03:00</published><updated>2012-01-31T11:40:40.810-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GRASS'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='GDAL'/><title type='text'>Reprojeção e Clip de Imagens "On the Fly" com o GRASS e GDAL</title><content type='html'>Lendo o livro "&lt;i&gt;&lt;a href="http://www.grassbook.org/" target="_blank"&gt;Open Source GIS: A GRASS GIS Approach&lt;/a&gt;&lt;/i&gt;" (pág. 49) encontrei um procedimento muito útil para resolver o seguinte problema: recortar uma imagem SRTM e reprojetá-la para os mesmos parâmetros definidos no meu projeto. Dessa forma fica bem mais fácil importar a imagem gerada com o comando &lt;i&gt;r.in.gdal. &lt;/i&gt;Segue o passo a passo:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;1 - Verificar as informações da imagem a ser reprojetada e recortada:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; gdalinfo Geoprocessamento/raster/srtm/&lt;span class="Apple-style-span" style="color: red;"&gt;SB-25-Y-C.tif&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Driver: GTiff/GeoTIFF&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Files: Geoprocessamento/raster/srtm/SB-25-Y-C.tif&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Size is 1800, 1200&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Coordinate System is:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;GEOGCS["WGS 84",&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; DATUM["WGS_1984",&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SPHEROID["WGS 84",6378137,298.257223563,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AUTHORITY["EPSG","7030"]],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AUTHORITY["EPSG","6326"]],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PRIMEM["Greenwich",0],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; UNIT["degree",0.0174532925199433],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; AUTHORITY["EPSG","4326"]]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Origin = (-36.000415601243731,-7.000415916030761)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Pixel Size = (0.000833333353512,-0.000833333353512)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Metadata:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; TIFFTAG_SOFTWARE=IMAGINE TIFF Support&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Copyright 1991 - 1999 by ERDAS, Inc. All Rights Reserved&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;@(#)$RCSfile: etif.c $ $Revision: 1.10.1.9 $ $Date: 2003/11/13 19:25:49EST $&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; TIFFTAG_XRESOLUTION=1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; TIFFTAG_YRESOLUTION=1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; TIFFTAG_RESOLUTIONUNIT=1 (unitless)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; AREA_OR_POINT=Area&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Image Structure Metadata:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; INTERLEAVE=BAND&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Corner Coordinates:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Upper Left &amp;nbsp;( -36.0004156, &amp;nbsp;-7.0004159) ( 36d 0' 1.50"W, &amp;nbsp;7d 0' 1.50"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Lower Left &amp;nbsp;( -36.0004156, &amp;nbsp;-8.0004159) ( 36d 0' 1.50"W, &amp;nbsp;8d 0' 1.50"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Upper Right ( -34.5004156, &amp;nbsp;-7.0004159) ( 34d30' 1.50"W, &amp;nbsp;7d 0' 1.50"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Lower Right ( -34.5004156, &amp;nbsp;-8.0004159) ( 34d30' 1.50"W, &amp;nbsp;8d 0' 1.50"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Center &amp;nbsp; &amp;nbsp; &amp;nbsp;( -35.2504156, &amp;nbsp;-7.5004159) ( 35d15' 1.50"W, &amp;nbsp;7d30' 1.50"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Band 1 Block=1800x2 Type=UInt16, ColorInterp=Gray&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;u&gt;2 - Imprimir a região definida como padrão na location:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; g.region -p&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;projection: 1 (UTM)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;zone: &amp;nbsp; &amp;nbsp; &amp;nbsp; -25&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;datum: &amp;nbsp; &amp;nbsp; &amp;nbsp;sam69&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;ellipsoid: &amp;nbsp;sam69&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;north: &amp;nbsp; &amp;nbsp; &amp;nbsp;9206640&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;south: &amp;nbsp; &amp;nbsp; &amp;nbsp;9180540&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;west: &amp;nbsp; &amp;nbsp; &amp;nbsp; 259380&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;east: &amp;nbsp; &amp;nbsp; &amp;nbsp; 300780&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;nsres: &amp;nbsp; &amp;nbsp; &amp;nbsp;90&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;ewres: &amp;nbsp; &amp;nbsp; &amp;nbsp;90&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;rows: &amp;nbsp; &amp;nbsp; &amp;nbsp; 290&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;cols: &amp;nbsp; &amp;nbsp; &amp;nbsp; 460&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;cells: &amp;nbsp; &amp;nbsp; &amp;nbsp;133400&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;u&gt;3 - Usar o comando "eval", para setar como variáveis, a saída do comando anterior (veja mais sobre esse comando em:&amp;nbsp;&lt;a href="http://goo.gl/70sAi"&gt;http://goo.gl/70sAi&lt;/a&gt;):&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; eval `g.region -g`&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;u&gt;4 - Verificar o resultado do comando anterior com o comando "echo", observe que é exibido o retângulo envolvente da região definida como default:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; echo "$w $s $e $n"&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;259380 9180540 300780 9206640&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;5 - Verificar a projeção definida na location:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; g.proj -wf&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;PROJCS["&lt;span class="Apple-style-span" style="color: blue;"&gt;UTM Zone 25&lt;/span&gt;, Southern Hemisphere",GEOGCS["sam69",DATUM["South_American_Datum_1969",SPHEROID["South_American_Datum_1969",6378160,298.25]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-33],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",10000000],UNIT["Meter",1]]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;6 - Usar o comando "gdalwarp" para recortar e reprojetar a imagem a partir da projeção definida no grass e do retângulo envolvente da region:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; gdalwarp -t_srs "`g.proj -wf`" -te $w $s $e $n \&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Geoprocessamento/raster/srtm/&lt;span class="Apple-style-span" style="color: red;"&gt;SB-25-Y-C.tif&lt;/span&gt; &amp;nbsp;\&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Geoprocessamento/raster/srtm/&lt;span class="Apple-style-span" style="color: red;"&gt;srtm_clip_utm25.tif&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Creating output file that is 450P x 283L.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Processing input file Geoprocessamento/raster/srtm/SB-25-Y-C.tif.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;0...10...20...30...40...50...60...70...80...90...100 - done.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;7 - Verificar a imagem reprojetada e cortada:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; gdalinfo Geoprocessamento/raster/srtm/srtm_clip_utm25.tif&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Driver: GTiff/GeoTIFF&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Files: Geoprocessamento/raster/srtm/srtm_clip_utm25.tif&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Size is 450, 283&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Coordinate System is:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;PROJCS["UTM Zone 25, Southern Hemisphere",&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; GEOGCS["sam69",&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DATUM["South_American_Datum_1969",&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SPHEROID["South_American_Datum_1969",6378160,298.25,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AUTHORITY["EPSG","7036"]],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AUTHORITY["EPSG","6291"]],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PRIMEM["Greenwich",0],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UNIT["degree",0.0174532925199433]],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PROJECTION["Transverse_Mercator"],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PARAMETER["latitude_of_origin",0],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PARAMETER["central_meridian",-33],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PARAMETER["scale_factor",0.9996],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PARAMETER["false_easting",500000],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; PARAMETER["false_northing",10000000],&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; UNIT["metre",1,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AUTHORITY["EPSG","9001"]]]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Origin = (259380.000000000000000,9206640.000000000000000)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Pixel Size = (92.000000000000000,-92.226148409893995)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Metadata:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; AREA_OR_POINT=Area&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Image Structure Metadata:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp; INTERLEAVE=BAND&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Corner Coordinates:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Upper Left &amp;nbsp;( &amp;nbsp;259380.000, 9206640.000) ( 35d10'43.72"W, &amp;nbsp;7d10'19.95"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Lower Left &amp;nbsp;( &amp;nbsp;259380.000, 9180540.000) ( 35d10'47.83"W, &amp;nbsp;7d24'29.27"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Upper Right ( &amp;nbsp;300780.000, 9206640.000) ( 34d48'14.67"W, &amp;nbsp;7d10'25.80"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Lower Right ( &amp;nbsp;300780.000, 9180540.000) ( 34d48'18.07"W, &amp;nbsp;7d24'35.32"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue; font-size: x-small;"&gt;Center &amp;nbsp; &amp;nbsp; &amp;nbsp;( &amp;nbsp;280080.000, 9193590.000) ( 34d59'31.09"W, &amp;nbsp;7d17'27.72"S)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Band 1 Block=450x9 Type=UInt16, ColorInterp=Gray&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;8 - Importar a imagem reprojetada e cortada:&lt;/u&gt;&lt;br /&gt;&lt;b&gt;GRASS 7.0.svn (gramame):~ &amp;gt; r.in.gdal input=Geoprocessamento/raster/srtm/srtm_clip_utm25.tif output=mde&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Projection of input dataset and current location appear to match&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;100%&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;r.in.gdal complete. Raster map &lt;mde&gt; created.&lt;/mde&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Um abraço e até o próximo post :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-3247636437856968885?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/3247636437856968885/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=3247636437856968885' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/3247636437856968885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/3247636437856968885'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2012/01/reprojecao-de-imagens-usando-recursos.html' title='Reprojeção e Clip de Imagens &quot;On the Fly&quot; com o GRASS e GDAL'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-6890987111866977872</id><published>2011-04-23T19:50:00.000-03:00</published><updated>2011-04-23T19:50:32.611-03:00</updated><title type='text'>Paul Ramsey: Snapping Points in PostGIS</title><content type='html'>&lt;a href="http://blog.cleverelephant.ca/2008/04/snapping-points-in-postgis.html"&gt;Paul Ramsey: Snapping Points in PostGIS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-6890987111866977872?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.cleverelephant.ca/2008/04/snapping-points-in-postgis.html' title='Paul Ramsey: Snapping Points in PostGIS'/><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/6890987111866977872/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=6890987111866977872' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/6890987111866977872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/6890987111866977872'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2011/04/paul-ramsey-snapping-points-in-postgis.html' title='Paul Ramsey: Snapping Points in PostGIS'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-7429395169563915105</id><published>2011-04-04T09:33:00.009-03:00</published><updated>2011-04-04T09:49:56.871-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FOSSGIS Brasil'/><title type='text'>Fim do mistério: Revista FOSSGIS Brasil é lançada</title><content type='html'>&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Finalmente chegou a hora de acabar com o mistério e revelar o que realmente é o projeto FOSSGIS Brasil. Muitos apostaram que era um evento, ou uma organização, mas ninguém chegou a acertar o que realmente é este projeto.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Nos últimos anos as Geotecnologias Livres tem crescido e se destacado como real opção no mercado corporativo, e com isso houve um aumento na procura por essas tecnologias. Hoje existem diversos blogs, listas de discussão e fóruns em português que tratam de diversos assuntos relacionados e prestam suporte gratuito a essas tecnologias e, entre eles está o blog Geoparalinux. Porém até hoje não existia uma revista especializada nas Geotecnologias Livres.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Com esse intuito nasce a Revista FOSSGIS Brasil (&lt;a href="http://www.fossgisbrasil.com.br/"&gt;http://www.fossgisbrasil.com.br/&lt;/a&gt;), na busca de preencher essa lacuna existente. Para viabilizar este projeto alguns dos principais nomes do cenário das Geotecnologias Livres se uniram para criar um material de alta qualidade, baseado nos princípios do software livre.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Nesta primeira edição falaremos sobre iniciativas como o OL4JSF, um projeto 100% brasileiro, que já está fazendo sucesso lá fora. Além dos padrões OGC, a história da Geotecnologias Livres, gvSIG, aplicativos GIS para dispositivos móveis, entre outros. Há também nesta edição uma&amp;nbsp;entrevista exclusiva com Gilberto câmara, diretor geral do INPE (Instituto Nacional de Pesquisas Espaciais).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;A revista é inteiramente grátis, sem necessidade de se realizar cadastros, pagar taxas ou algo do gênero. Para obter o seu exemplar da revista é necessário apenas realizar o download.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify;"&gt;Esperamos que você goste dessa nova iniciativa.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Atenciosamente,&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Equipe FOSSGIS Brasil&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.fossgisbrasil.com.br/"&gt;http://www.fossgisbrasil.com.br&lt;/a&gt;&lt;/div&gt;&lt;div&gt;revista@fossgisbrasil.com.br&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://geoparalinux.files.wordpress.com/2011/03/fossgis_curve_04a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://geoparalinux.files.wordpress.com/2011/03/fossgis_curve_04a.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-7429395169563915105?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/7429395169563915105/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=7429395169563915105' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/7429395169563915105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/7429395169563915105'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2011/04/fim-do-misterio-revista-fossgis-brasil.html' title='Fim do mistério: Revista FOSSGIS Brasil é lançada'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-6115202340756307639</id><published>2011-03-15T17:12:00.000-03:00</published><updated>2011-03-15T17:12:21.083-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><title type='text'>E que rufem os tambores....</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.fernandoquadro.com.br/html/wp-content/uploads/2011/03/novo_projeto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.fernandoquadro.com.br/html/wp-content/uploads/2011/03/novo_projeto.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aguardem.... um grandioso projeto está para nascer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-6115202340756307639?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/6115202340756307639/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=6115202340756307639' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/6115202340756307639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/6115202340756307639'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2011/03/e-que-rufem-os-tambores.html' title='E que rufem os tambores....'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-2135207215924268464</id><published>2011-01-10T07:29:00.000-03:00</published><updated>2011-01-10T07:29:30.234-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Treinamentos'/><title type='text'>Cursos de GIS e Webmapping</title><content type='html'>&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span"&gt;&lt;span style="color: black; line-height: 115%;"&gt;A &lt;a href="http://acessolivreconsultoria.com/"&gt;Acesso Livre Consultoria&lt;/a&gt; está oferecendo uma série de cursos na área de Geotecnologias. Vale a pena conferir nos links abaixo:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="apple-style-span" style="line-height: 20px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://acessolivreconsultoria.com/site/cursos/mapserver-basico.html"&gt;Mapserver Básico&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acessolivreconsultoria.com/site/cursos/mapserver-avancado.html"&gt;Mapserver Avançado&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acessolivreconsultoria.com/site/cursos/postgresql-com-o-modulo-geografico-postgis"&gt;PostgreSQL com o módulo geográfico PostGIS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acessolivreconsultoria.com/site/cursos/openlayers.html"&gt;OpenLayers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acessolivreconsultoria.com/site/cursos/gvsig.html"&gt;GvSIG&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://acessolivreconsultoria.com/site/cursos/kosmo.html"&gt;Kosmo GIS&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-2135207215924268464?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/2135207215924268464/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=2135207215924268464' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2135207215924268464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2135207215924268464'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2011/01/cursos-de-gis-e-webmapping.html' title='Cursos de GIS e Webmapping'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-8781143536890723924</id><published>2011-01-03T17:18:00.001-03:00</published><updated>2011-01-03T17:19:10.816-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Maps'/><title type='text'>Ícones Customizados para o Google Maps</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://code.google.com/p/google-maps-icons/"&gt;&lt;img border="0" height="209" src="http://4.bp.blogspot.com/_CtoyFdPjkPs/TSIudujx_FI/AAAAAAAAAQI/MEhZhsmD90Y/s640/Capturar.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Descobri a pouco no Google Code, uma biblioteca de ícones que podem ser usados com a API do Maps. fica aqui a sugestão para quem quiser modificar a aparência dos Marcadores.&lt;br /&gt;&lt;br /&gt;Link do projeto:&amp;nbsp;&lt;a href="http://code.google.com/p/google-maps-icons/"&gt;http://code.google.com/p/google-maps-icons/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-8781143536890723924?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/8781143536890723924/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=8781143536890723924' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8781143536890723924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8781143536890723924'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2011/01/icones-customizados-para-o-google-maps.html' title='Ícones Customizados para o Google Maps'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CtoyFdPjkPs/TSIudujx_FI/AAAAAAAAAQI/MEhZhsmD90Y/s72-c/Capturar.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-7608395032362669879</id><published>2010-12-22T23:32:00.007-03:00</published><updated>2010-12-23T06:15:02.231-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GvSIG'/><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><category scheme='http://www.blogger.com/atom/ns#' term='SIG'/><title type='text'>Análise Espacial com o PostGIS e o GvSIG</title><content type='html'>&lt;div style="text-align: justify;"&gt;Uma das inúmeras vantagens de se trabalhar com o &lt;a href="http://postgis.refractions.net/"&gt;PostGIS &lt;/a&gt;é a possibilidade de criar views das análises espaciais, tornando os resultados das análises dinâmicas em função dos dados de entrada utilizados. Desta forma também evita-se a criação de novo layers em função de uma atualização da base.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para exemplificar, vamos imaginar a seguinte situação: em uma determinada cidade foi definido que a área de influência de uma parada de ônibus é de 40 metros e que a prefeitura deve identificar quais são os lotes dentro de cada área de influência das paradas. Apesar da situação ser muito comum para quem já trabalha com SIG, surge a necessidade de se repetir a análise a cada nova parada inserida ou excluída no sistema, o que pode acabar gerando inconsistências na base em função do mal gerenciamento destes arquivos.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Com o uso do &lt;a href="http://postgis.refractions.net/"&gt;PostGIS &lt;/a&gt;e do &lt;a href="http://www.gvsig.org/web/"&gt;GvSIG &lt;/a&gt;eu vou mostrar como resolver este problema sem a necessidade de ficar criando novas camadas a partir das análises desse problema, no caso, a criação do buffer de 40 metros e a consulta espacial (intersects).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;No PgAdmin 3, crie um novo Banco de Dados Espacial com o nome cadastro (Figura 1), em seguida, baixe, descompacte e carregue no banco criado o arquivo SQL do link abaixo (Figura 2):&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://acessolivreconsultoria.com/curso_mapserver_gvsig_postgis/lote.zip"&gt;http://acessolivreconsultoria.com/curso_mapserver_gvsig_postgis/lote.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_CtoyFdPjkPs/TRKhF5stp0I/AAAAAAAAAPc/3Lu5fYrVaTU/s1600/figura+1.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_CtoyFdPjkPs/TRKhF5stp0I/AAAAAAAAAPc/3Lu5fYrVaTU/s320/figura+1.PNG" width="213" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 1 - Criação do Banco de Dados Espacial&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_CtoyFdPjkPs/TRKhWY1caxI/AAAAAAAAAPg/pijaNgChH0A/s1600/figura2.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="169" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/TRKhWY1caxI/AAAAAAAAAPg/pijaNgChH0A/s320/figura2.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 2 - Carregando o Script SQL da tabela Lote&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;Agora vamos criar a tabela ponto_onibus a partir do script abaixo (Figura 3):&lt;br /&gt;&lt;pre class="brush:sql"&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;ponto_onibus(&lt;br /&gt; id&amp;nbsp;serial&amp;nbsp;PRIMARY&amp;nbsp;KEY,&lt;br /&gt; observacao&amp;nbsp;varchar(50)&lt;br /&gt; );&lt;br /&gt;&lt;br /&gt;SELECT&amp;nbsp;AddGeometryColumn&amp;nbsp;(&lt;br /&gt; 'public',&amp;nbsp;--&amp;nbsp;esquema&lt;br /&gt; 'ponto_onibus',&amp;nbsp;--&amp;nbsp;nome&amp;nbsp;da&amp;nbsp;tabela&lt;br /&gt; 'the_geom',&amp;nbsp;--&amp;nbsp;nome&amp;nbsp;da&amp;nbsp;coluna&lt;br /&gt; '29185',&amp;nbsp;--&amp;nbsp;SRID&lt;br /&gt; 'POINT',&amp;nbsp;--&amp;nbsp;tipo&amp;nbsp;de&amp;nbsp;geometria&lt;br /&gt; 2&amp;nbsp;--&amp;nbsp;plano&amp;nbsp;(2d)&lt;br /&gt; );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_CtoyFdPjkPs/TRKjgtSXX0I/AAAAAAAAAPk/1HIoULRc4U4/s1600/figura3.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="219" src="http://4.bp.blogspot.com/_CtoyFdPjkPs/TRKjgtSXX0I/AAAAAAAAAPk/1HIoULRc4U4/s320/figura3.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 3 - Criação da tabela ponto_onibus no PgAdmin&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Vamos criar duas views, uma para os buffers de 40 metros em torno das paradas de ônibus e a outra dos os lotes que estão dentro desta distância (função intersects).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="brush:sql"&gt;--&amp;nbsp;Criando&amp;nbsp;a&amp;nbsp;view&amp;nbsp;buffer_ponto_onibus&lt;br /&gt;CREATE&amp;nbsp;OR&amp;nbsp;REPLACE&amp;nbsp;VIEW&amp;nbsp;buffer_ponto_onibus&amp;nbsp;AS&lt;br /&gt;SELECT&amp;nbsp;id,&amp;nbsp;buffer(the_geom,&amp;nbsp;40)&amp;nbsp;AS&amp;nbsp;the_geom&amp;nbsp;&lt;br /&gt;FROM&amp;nbsp;ponto_onibus;&lt;br /&gt;&lt;br /&gt;--&amp;nbsp;Registrando&amp;nbsp;a&amp;nbsp;view&amp;nbsp;na&amp;nbsp;tabela&amp;nbsp;de&amp;nbsp;metadados&amp;nbsp;geometry_columns&lt;br /&gt;INSERT&amp;nbsp;INTO&amp;nbsp;geometry_columns(f_table_catalog,&amp;nbsp;f_table_schema,&amp;nbsp;f_table_name,&amp;nbsp;f_geometry_column,&amp;nbsp;coord_dimension,&amp;nbsp;srid,&amp;nbsp;"type")&lt;br /&gt;VALUES&amp;nbsp;('',&amp;nbsp;'public',&amp;nbsp;'buffer_ponto_onibus',&amp;nbsp;'the_geom',&amp;nbsp;2,&amp;nbsp;29185,&amp;nbsp;'POLYGON');&lt;br /&gt;&lt;br /&gt;--&amp;nbsp;Criando&amp;nbsp;a&amp;nbsp;view&amp;nbsp;lotes_ponto_onibus&lt;br /&gt;CREATE&amp;nbsp;OR&amp;nbsp;REPLACE&amp;nbsp;VIEW&amp;nbsp;lotes_ponto_onibus&amp;nbsp;AS&lt;br /&gt;SELECT&amp;nbsp;l.*&lt;br /&gt;FROM&amp;nbsp;lote&amp;nbsp;l,&amp;nbsp;&amp;nbsp;buffer_ponto_onibus&amp;nbsp;b&lt;br /&gt;WHERE&amp;nbsp;intersects(l.the_geom,&amp;nbsp;b.the_geom);&lt;br /&gt;&lt;br /&gt;--&amp;nbsp;Registrando&amp;nbsp;a&amp;nbsp;view&amp;nbsp;na&amp;nbsp;tabela&amp;nbsp;de&amp;nbsp;metadados&amp;nbsp;geometry_columns&lt;br /&gt;INSERT&amp;nbsp;INTO&amp;nbsp;geometry_columns(f_table_catalog,&amp;nbsp;f_table_schema,&amp;nbsp;f_table_name,&amp;nbsp;f_geometry_column,&amp;nbsp;coord_dimension,&amp;nbsp;srid,&amp;nbsp;"type")&lt;br /&gt;VALUES&amp;nbsp;('',&amp;nbsp;'public',&amp;nbsp;'lotes_ponto_onibus',&amp;nbsp;'the_geom',&amp;nbsp;2,&amp;nbsp;29185,&amp;nbsp;'POLYGON');&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Abra o GvSIG e mude a projeção do bloco para 29185 (Figura 4)&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_CtoyFdPjkPs/TRKsZMQe3QI/AAAAAAAAAPo/fCBWm1UgxrM/s1600/figura4.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="251" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/TRKsZMQe3QI/AAAAAAAAAPo/fCBWm1UgxrM/s320/figura4.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 4 - Troca do sistema de projeção no GvSIG&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Com o bloco aberto, clique no botão adicionar plano de informação e escolha a segunda aba (GeoDB), em seguida configure a conexão com o banco de dados "cadastro" (Figura 5).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_CtoyFdPjkPs/TRKt4hAvGdI/AAAAAAAAAPs/yojXId_Wk3s/s1600/figura5.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="191" src="http://2.bp.blogspot.com/_CtoyFdPjkPs/TRKt4hAvGdI/AAAAAAAAAPs/yojXId_Wk3s/s320/figura5.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 5 - Configuração da conexão com o Banco de Dados&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Configurada a conexão, adicione as tabelas "lote" e "parada_onibus" e as views "buffer_ponto_onibus" e "lotes_ponto_onibus" (Figura 6).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_CtoyFdPjkPs/TRKut6H_mEI/AAAAAAAAAPw/M7VvHDd9Xqs/s1600/figura6.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/TRKut6H_mEI/AAAAAAAAAPw/M7VvHDd9Xqs/s320/figura6.PNG" width="291" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 6 - Adicionando as camadas do BD&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Inicie a edição da camada ponto_onibus clicando com o botão direito em cima desta camada e escolhendo a opção "Iniciar Edição" em seguida, adicione algumas paradas de forma aleatória. Termine a edição Salvando as alterações (Figura 7).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_CtoyFdPjkPs/TRKwvEs2usI/AAAAAAAAAP0/K8YmMNRcs-U/s1600/figura7.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="170" src="http://3.bp.blogspot.com/_CtoyFdPjkPs/TRKwvEs2usI/AAAAAAAAAP0/K8YmMNRcs-U/s320/figura7.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 7 - Inserindo os pontos de ônibus&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Para ver as modificações nas dias views, basta desligar e ligar uma das camadas &amp;nbsp;"buffer_ponto_onibus" ou "lotes_ponto_onibus" (Figura 8).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_CtoyFdPjkPs/TRKyn29T8nI/AAAAAAAAAP4/YhSMeQVrzcw/s1600/figura8.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="146" src="http://2.bp.blogspot.com/_CtoyFdPjkPs/TRKyn29T8nI/AAAAAAAAAP4/YhSMeQVrzcw/s320/figura8.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 8 - Resultado dinâmico das análises a partir dos pontos criados&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;A cada novo ponto criado ou excluído, as duas views são atualizadas automaticamente (Figura 9).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_CtoyFdPjkPs/TRKznxhg6GI/AAAAAAAAAP8/F6UbvpGSQF8/s1600/figura9.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="166" src="http://3.bp.blogspot.com/_CtoyFdPjkPs/TRKznxhg6GI/AAAAAAAAAP8/F6UbvpGSQF8/s320/figura9.PNG" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 9 - Resultado das análises após modificar a camada ponto_onibus&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Esperam que tenham gostado dessa dica, até a próxima!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-7608395032362669879?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/7608395032362669879/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=7608395032362669879' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/7608395032362669879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/7608395032362669879'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/12/analise-espacial-com-o-postgis-e-o.html' title='Análise Espacial com o PostGIS e o GvSIG'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_CtoyFdPjkPs/TRKhF5stp0I/AAAAAAAAAPc/3Lu5fYrVaTU/s72-c/figura+1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-4172422381203472548</id><published>2010-12-17T10:18:00.007-03:00</published><updated>2010-12-17T11:01:50.033-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDAL'/><category scheme='http://www.blogger.com/atom/ns#' term='OGR'/><category scheme='http://www.blogger.com/atom/ns#' term='SIG'/><title type='text'>Alternativa Open Source para o ArcCatalog e o ArcToolbox</title><content type='html'>O &lt;a href="http://code.google.com/p/wxgis/"&gt;wxGIS &lt;/a&gt;possui as mesmas características dos módulos ArcCatalog e ArcToolBox do ArcGIS, e o que é melhor, é open source :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://code.google.com/p/wxgis/"&gt;&lt;img border="0" height="380" src="http://wxgis.googlecode.com/svn/wiki/WikiPageName.attach/wxGIS%5Bcatalog%5D2.jpg" width="600" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://code.google.com/p/wxgis/"&gt;&lt;img border="0" height="380" src="http://wxgis.googlecode.com/svn/wiki/WikiPageName.attach/wxGIS[catalog]3.jpg" width="600" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://code.google.com/p/wxgis/"&gt;&lt;img border="0" height="380" src="http://wxgis.googlecode.com/svn/wiki/WikiPageName.attach/wxGIS(Catalog_linux).jpg" width="600" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: arial, sans-serif; font-size: 13px; max-width: 65em;"&gt;&lt;strong&gt;Para instalar o wxGIS no Ubuntu é necessário:&lt;/strong&gt;&lt;/div&gt;&lt;ul style="font-family: arial, sans-serif; font-size: 13px; max-width: 65em; padding-left: 40px;"&gt;&lt;li&gt;Adicionar o seu repositório a sources list: deb&amp;nbsp;&lt;a href="http://ppa.launchpad.net/bishop-gis/wxgis/ubuntu" rel="nofollow" style="color: #0000cc;"&gt;http://ppa.launchpad.net/bishop-gis/wxgis/ubuntu&lt;/a&gt;&amp;nbsp;lucid main&lt;/li&gt;&lt;li&gt;Atualizar a lista de repositórios&lt;/li&gt;&lt;li&gt;e por último, instalar o pacote wxgis0&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-4172422381203472548?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/4172422381203472548/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=4172422381203472548' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/4172422381203472548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/4172422381203472548'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/12/alternativa-open-source-para-o.html' title='Alternativa Open Source para o ArcCatalog e o ArcToolbox'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-652652719447337132</id><published>2010-12-04T07:18:00.005-03:00</published><updated>2010-12-18T17:07:05.301-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>PostrgeSQL - dados para realização dos exercícios</title><content type='html'>&lt;pre class="brush:sql"&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;municipio (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;codmun&amp;nbsp;serial,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nomemun&amp;nbsp;varchar(35),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;populacao&amp;nbsp;numeric(10,0),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;prim&amp;aacute;ria&amp;nbsp;codmun&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY&amp;nbsp;(codmun)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;--------------------------------------&lt;br /&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;proprietario&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;idprop&amp;nbsp;serial,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nomeprop&amp;nbsp;varchar(30),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;telprop&amp;nbsp;char(11),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;prim&amp;aacute;ria&amp;nbsp;idprop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY(idprop)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;--------------------------------------&lt;br /&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;fazenda&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;idfaz&amp;nbsp;serial,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;nomefaz&amp;nbsp;varchar(40),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;areafaz&amp;nbsp;float,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;codmun&amp;nbsp;int,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dono&amp;nbsp;int,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;prim&amp;aacute;ria&amp;nbsp;idfaz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY(idfaz),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;estrangeira&amp;nbsp;codmun&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FOREIGN&amp;nbsp;KEY(codmun)&amp;nbsp;REFERENCES&amp;nbsp;municipio(codmun)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON&amp;nbsp;UPDATE&amp;nbsp;CASCADE&amp;nbsp;ON&amp;nbsp;DELETE&amp;nbsp;NO&amp;nbsp;ACTION,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;estrangeira&amp;nbsp;dono&amp;nbsp;que&amp;nbsp;se&amp;nbsp;chama&amp;nbsp;idprop&amp;nbsp;em&amp;nbsp;faz.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FOREIGN&amp;nbsp;KEY(dono)&amp;nbsp;REFERENCES&amp;nbsp;proprietario(idprop)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON&amp;nbsp;UPDATE&amp;nbsp;CASCADE&amp;nbsp;ON&amp;nbsp;DELETE&amp;nbsp;NO&amp;nbsp;ACTION&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;--------------------------------------&lt;br /&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;variedade&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tipovar&amp;nbsp;serial,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;descvar&amp;nbsp;varchar(25),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProdMedTon&amp;nbsp;numeric(11,5),&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;prim&amp;aacute;ria&amp;nbsp;id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY(tipovar)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;--------------------------------------&amp;nbsp;&amp;nbsp;&lt;br /&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;plantacao&amp;nbsp;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;id&amp;nbsp;serial,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;idfaz&amp;nbsp;int,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tipovar&amp;nbsp;int,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;datplantio&amp;nbsp;date,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;datultcolh&amp;nbsp;date,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;prim&amp;aacute;ria&amp;nbsp;id&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;PRIMARY&amp;nbsp;KEY(id),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;estrangeira&amp;nbsp;idfaz&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FOREIGN&amp;nbsp;KEY(idfaz)&amp;nbsp;REFERENCES&amp;nbsp;fazenda(idfaz)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON&amp;nbsp;UPDATE&amp;nbsp;CASCADE&amp;nbsp;ON&amp;nbsp;DELETE&amp;nbsp;NO&amp;nbsp;ACTION,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;--definindo&amp;nbsp;a&amp;nbsp;chave&amp;nbsp;estrangeira&amp;nbsp;tipovar&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FOREIGN&amp;nbsp;KEY(tipovar)&amp;nbsp;REFERENCES&amp;nbsp;variedade(tipovar)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ON&amp;nbsp;UPDATE&amp;nbsp;CASCADE&amp;nbsp;ON&amp;nbsp;DELETE&amp;nbsp;NO&amp;nbsp;ACTION&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------------------- &lt;br /&gt;-- DADOS DA TABELA municipio&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;INSERT INTO municipio (codmun, nomemun, populacao) VALUES (1,'Zumbi',5230);&lt;br /&gt;INSERT INTO municipio (codmun, nomemun, populacao) VALUES (2,'Campina Grande',10000); &lt;br /&gt;INSERT INTO municipio (codmun, nomemun, populacao) VALUES (3,'Pedras de Fogo',2030);&lt;br /&gt;INSERT INTO municipio (codmun, nomemun, populacao) VALUES (4,'Jo&amp;atilde;o Pessoa',35000);&lt;br /&gt;INSERT INTO municipio (codmun, nomemun, populacao) VALUES (5,'Patos',9840); &lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;-- DADOS DA TABELA proprietario&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;INSERT INTO proprietario (idprop, nomeprop, telprop) VALUES (201,'Jos&amp;eacute; Dumont',8332247845); &lt;br /&gt;INSERT INTO proprietario (idprop, nomeprop, telprop) VALUES (202,'Carlos Nascimento',8332210066);&lt;br /&gt;INSERT INTO proprietario (idprop, nomeprop, telprop) VALUES (207,'Maria da Silva',83341779911);&lt;br /&gt;INSERT INTO proprietario (idprop, nomeprop, telprop) VALUES (215,'Carlos Silva',84341459924); &lt;br /&gt;INSERT INTO proprietario (idprop, nomeprop, telprop) VALUES (244,'Pedro Luiz',81344458700);&lt;br /&gt;INSERT INTO proprietario (idprop, nomeprop, telprop) VALUES (274,'Alessandro Gomes',83322150607);&lt;br /&gt;--------------------------------------------------------------------------- &lt;br /&gt;-- DADOS DA TABELA Fazenda&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (501, 'Gado Bravo', 130.41, 1, 274);&lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (513, 'Bixinho', 50.02, 2, 274);&lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (512, 'Horizonte', 45.21, 5, 201);&lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (559, 'Riacho Azul', 60.00, 3, 244); &lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (560, 'Papa L&amp;eacute;guas', 245.44, 3, 202);&lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (578, 'Maravilha', 200.10, 4, 207);&lt;br /&gt;INSERT INTO Fazenda (IdFaz,NomeFaz,AreaFaz, CodMun, Dono) VALUES (545, 'Boquim', 78.00, 2, 207);&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;-- DADOS DA TABELA variedade&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;INSERT INTO variedade (tipovar, descvar, prodmedton) VALUES (1, 'Cana de A&amp;ccedil;&amp;uacute;car', .5); &lt;br /&gt;INSERT INTO variedade (tipovar, descvar, prodmedton) VALUES (2, 'Abacaxi', .1);&lt;br /&gt;INSERT INTO variedade (tipovar, descvar, prodmedton) VALUES (3, 'Feij&amp;atilde;o', .4);&lt;br /&gt;--------------------------------------------------------------------------- &lt;br /&gt;-- DADOS DA TABELA Plantacao&lt;br /&gt;---------------------------------------------------------------------------&lt;br /&gt;INSERT INTO plantacao (idfaz, tipovar, datplantio, datultcolh) VALUES (501,1,'2005/04/02', '2005/06/13');  &lt;br /&gt;INSERT INTO plantacao (idfaz, tipovar, datplantio, datultcolh) VALUES (513,2,'2005/01/12', '2005/09/04');  &lt;br /&gt;INSERT INTO plantacao (idfaz, tipovar, datplantio, datultcolh) VALUES (560,2,'2005/02/02', '2005/10/26');  &lt;br /&gt;INSERT INTO plantacao (idfaz, tipovar, datplantio, datultcolh) VALUES (578,3,'2005/04/01', '2005/10/13');&lt;br /&gt;INSERT INTO plantacao (idfaz, tipovar, datplantio, datultcolh) VALUES (578,2,'2005/6/07', '2005/12/29');&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-652652719447337132?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/652652719447337132/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=652652719447337132' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/652652719447337132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/652652719447337132'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/12/respostas-pos-fatecjp-ex1.html' title='PostrgeSQL - dados para realização dos exercícios'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-5110003807601424252</id><published>2010-10-11T09:33:00.001-03:00</published><updated>2010-10-11T09:35:29.629-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Tutorial CodeIgniter - Parte 5</title><content type='html'>&lt;div style="text-align: justify;"&gt;Vamos finalizar a nossa aplicação desenvolvendo o CRUD para a tabela&lt;b&gt; rio&lt;/b&gt;, grande parte do código utilizado nas postagens anteriores será reutilizado.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Vamos começar com o &lt;b&gt;rio_model.php:&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;?php&lt;br /&gt;class&amp;nbsp;Rio_model&amp;nbsp;extends&amp;nbsp;Model&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;__construct()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent::model();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;get_rio()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;order_by('nome_rio',&amp;nbsp;'asc');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//junção&amp;nbsp;com&amp;nbsp;a&amp;nbsp;tabela&amp;nbsp;bacia_hidrografica&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;join('bacia_hidrografica',&amp;nbsp;'bacia_hidrografica.id_bacia&amp;nbsp;=&amp;nbsp;rio.id_bacia');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$query&amp;nbsp;=&amp;nbsp;$this-&amp;gt;db-&amp;gt;get('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($query-&amp;gt;num_rows()&amp;nbsp;&amp;gt;&amp;nbsp;0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$query-&amp;gt;result();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;insert()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data&amp;nbsp;=&amp;nbsp;$_POST;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$this-&amp;gt;db-&amp;gt;insert('rio',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;get_where($id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;where('id_rio',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;join('bacia_hidrografica',&amp;nbsp;'bacia_hidrografica.id_bacia&amp;nbsp;=&amp;nbsp;rio.id_bacia');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$query&amp;nbsp;=&amp;nbsp;$this-&amp;gt;db-&amp;gt;get('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$query-&amp;gt;row();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;update($id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data&amp;nbsp;=&amp;nbsp;$_POST;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;where('id_rio',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;update('rio',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;delete($id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;where('id_rio',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$this-&amp;gt;db-&amp;gt;delete('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O nosso controllador &lt;b&gt;rio.php &lt;/b&gt;vai carregar dois model´s, já que teremos nos formulários de inserção e de atualização uma lista das bacias cadastradas:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;class&amp;nbsp;Rio&amp;nbsp;extends&amp;nbsp;Controller&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;__construct()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent::controller();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;model(array('rio_model',&amp;nbsp;'bacia_model'));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;library('form_validation');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;index()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Rios";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['rios']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;rio_model-&amp;gt;get_rio();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('rio_view',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;criar()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Novo&amp;nbsp;Rio";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Criar&amp;nbsp;novo&amp;nbsp;Rio";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['bacias']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_bacia();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('rio_new',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;insere()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Novo&amp;nbsp;Rio&amp;nbsp;|&amp;nbsp;Erro&amp;nbsp;na&amp;nbsp;Validação,&amp;nbsp;preencha&amp;nbsp;corretamente!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Criar&amp;nbsp;novo&amp;nbsp;Rio&amp;nbsp;|&amp;nbsp;Preencha&amp;nbsp;Corretamente!";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['bacias']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_bacia();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('nome_rio',&amp;nbsp;'Nome&amp;nbsp;do&amp;nbsp;Rio',&amp;nbsp;'required|alpha');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('comprimento_km',&amp;nbsp;'Comprimento',&amp;nbsp;'required|numeric');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('id_bacia',&amp;nbsp;'Bacia&amp;nbsp;Hidrográfica',&amp;nbsp;'required');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($this-&amp;gt;form_validation-&amp;gt;run()&amp;nbsp;==&amp;nbsp;FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('rio_new',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;rio_model-&amp;gt;insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Criado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;editar($id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Editar&amp;nbsp;Rio";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Editar&amp;nbsp;Rio";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['registro']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;rio_model-&amp;gt;get_where($id);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['bacias']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_bacia();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('rio_new',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;atualizar()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$id&amp;nbsp;=&amp;nbsp;$this-&amp;gt;input-&amp;gt;post('id_rio');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Editar&amp;nbsp;Rio&amp;nbsp;|&amp;nbsp;Erro&amp;nbsp;na&amp;nbsp;Validação,&amp;nbsp;preencha&amp;nbsp;corretamente!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Editar&amp;nbsp;Rio&amp;nbsp;|&amp;nbsp;Preencha&amp;nbsp;Corretamente!";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['registro']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;rio_model-&amp;gt;get_where($id);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['bacias']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_bacia();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('nome_rio',&amp;nbsp;'Nome&amp;nbsp;do&amp;nbsp;Rio',&amp;nbsp;'required|alpha');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('comprimento_km',&amp;nbsp;'Comprimento',&amp;nbsp;'required|numeric');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('id_bacia',&amp;nbsp;'Bacia&amp;nbsp;Hidrográfica',&amp;nbsp;'required');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($this-&amp;gt;form_validation-&amp;gt;run()&amp;nbsp;==&amp;nbsp;FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('rio_new',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;rio_model-&amp;gt;update($id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Atualizado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;deletar($id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($this-&amp;gt;rio_model-&amp;gt;delete($id))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Deletado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'ERRO&amp;nbsp;-&amp;nbsp;Não&amp;nbsp;foi&amp;nbsp;possível&amp;nbsp;deletar&amp;nbsp;este&amp;nbsp;registro!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;A página de exibição dos rios (&lt;b&gt;rio_view.php&lt;/b&gt;):&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;nbsp;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN"&amp;nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;nbsp;xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;http-equiv="Content-Type"&amp;nbsp;content="text/html;&amp;nbsp;charset=utf-8"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;?=&amp;nbsp;$titulo&amp;nbsp;?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;&amp;lt;?=&amp;nbsp;$cabecalho&amp;nbsp;?&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;?=&amp;nbsp;anchor('bacia',&amp;nbsp;'Ver&amp;nbsp;Bacias&amp;nbsp;Hidrográficas')?&amp;gt;&amp;nbsp;&amp;amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;anchor('rio',&amp;nbsp;'Ver&amp;nbsp;Rios')?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;?=&amp;nbsp;anchor('rio/criar',&amp;nbsp;'Criar&amp;nbsp;Rio')&amp;nbsp;?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;?=&amp;nbsp;@$this-&amp;gt;session-&amp;gt;flashdata('msg');&amp;nbsp;?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;table&amp;nbsp;border="1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nome&amp;nbsp;do&amp;nbsp;rio&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Comprimento&amp;nbsp;(km)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nome&amp;nbsp;da&amp;nbsp;bacia&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ações&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;if&amp;nbsp;($rios&amp;nbsp;!=&amp;nbsp;false):&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;foreach&amp;nbsp;($rios&amp;nbsp;as&amp;nbsp;$rio):&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;$rio-&amp;gt;nome_rio&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;$rio-&amp;gt;comprimento_km&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;$rio-&amp;gt;nome_bacia&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;anchor('rio/editar/'&amp;nbsp;.&amp;nbsp;$rio-&amp;gt;id_rio,&amp;nbsp;'Editar')&amp;nbsp;?&amp;gt;&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;anchor('rio/deletar/'&amp;nbsp;.&amp;nbsp;$rio-&amp;gt;id_rio,&amp;nbsp;'Deletar')&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;endforeach;&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;else:&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Não&amp;nbsp;há&amp;nbsp;registros&amp;nbsp;cadastrados!&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;endif&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Da mesma forma como fizemos nas bacias, teremos um único arquivo responsável pelo cadastramento e atualização dos dados referentes a esta tabela (&lt;b&gt;rio_new.php&lt;/b&gt;):&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;nbsp;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN"&lt;br /&gt;&amp;nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;nbsp;xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;http-equiv="Content-Type"&amp;nbsp;content="text/html;&amp;nbsp;charset=utf-8"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;?=&amp;nbsp;$titulo&amp;nbsp;?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;&amp;lt;?=&amp;nbsp;$cabecalho&amp;nbsp;?&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;?=&amp;nbsp;validation_errors();&amp;nbsp;?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//verifica&amp;nbsp;se&amp;nbsp;o&amp;nbsp;form&amp;nbsp;vai&amp;nbsp;ser&amp;nbsp;usado&amp;nbsp;para&amp;nbsp;insert&amp;nbsp;ou&amp;nbsp;update&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!isset($registro-&amp;gt;id_rio))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;form_open('rio/insere');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;form_open('rio/atualizar');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;form_hidden('id_rio',&amp;nbsp;$registro-&amp;gt;id_rio);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;label&amp;gt;Nome&amp;nbsp;do&amp;nbsp;rio:&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input&amp;nbsp;name="nome_rio"&amp;nbsp;type="text"&amp;nbsp;id="nome_rio"&amp;nbsp;size="40"&amp;nbsp;value="&amp;lt;?=&amp;nbsp;@$registro-&amp;gt;nome_rio&amp;nbsp;?&amp;gt;"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;label&amp;gt;Comprimento&amp;nbsp;(km):&amp;nbsp;&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input&amp;nbsp;name="comprimento_km"&amp;nbsp;type="text"&amp;nbsp;id="comprimento_km"&amp;nbsp;size="40"&amp;nbsp;value="&amp;lt;?=&amp;nbsp;@$registro-&amp;gt;comprimento_km&amp;nbsp;?&amp;gt;"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;label&amp;gt;Bacia&amp;nbsp;Hidrográfica&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;select&amp;nbsp;name="id_bacia"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;option&amp;nbsp;value="&amp;lt;?=&amp;nbsp;@$registro-&amp;gt;id_bacia;&amp;nbsp;?&amp;gt;"&amp;gt;&amp;nbsp;&amp;lt;?=&amp;nbsp;@$registro-&amp;gt;nome_bacia;&amp;nbsp;?&amp;gt;&amp;nbsp;&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;foreach&amp;nbsp;($bacias&amp;nbsp;as&amp;nbsp;$bacia):&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;option&amp;nbsp;value="&amp;lt;?=&amp;nbsp;$bacia-&amp;gt;id_bacia;&amp;nbsp;?&amp;gt;"&amp;gt;&amp;nbsp;&amp;lt;?=&amp;nbsp;$bacia-&amp;gt;nome_bacia;&amp;nbsp;?&amp;gt;&amp;nbsp;&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;endforeach;&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/select&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input&amp;nbsp;type="submit"&amp;nbsp;id="Enviar"&amp;nbsp;value="Enviar"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;form_close()&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Finalizamos o CRUD das duas tabelas, no nosso próximo post, vou mostrar como habilitar o &lt;i&gt;mod_rewrite &lt;/i&gt;e retirar da url o index.php, e também fazer algumas pequenas melhorias visuais com CSS. Até lá!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-5110003807601424252?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/5110003807601424252/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=5110003807601424252' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/5110003807601424252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/5110003807601424252'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/10/tutorial-codeigniter-parte-5.html' title='Tutorial CodeIgniter - Parte 5'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-9019456162366218661</id><published>2010-10-10T08:13:00.001-03:00</published><updated>2010-10-10T08:22:47.572-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Tutorial CodeIgniter - Parte 4</title><content type='html'>&lt;div style="text-align: justify;"&gt;Vamos agora adicionar a validação no formulário de criação das Bacias Hidrográficas e em seguida, no próximo post, finalizar a aplicação com o CRUD dos rios.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A validação no CodeIgniter é feita através da biblioteca&amp;nbsp; "&lt;i&gt;form_validation&lt;/i&gt;", o único problema que eu tive com ela, foi o fato da mesma não aceitar acentos da língua portuguesa,&amp;nbsp; para resolvermos&amp;nbsp; isso, vamos extender a classe do core realizando uma modificação no código da função&lt;i&gt; alpha()&lt;/i&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para ver as mensagens dos erros de validação em português, é necessário baixar este &lt;a href="http://codeigniter.com/wiki/File:pt-br_1.7.2_utf8.zip/"&gt;arquivo&lt;/a&gt;, em seguida descompactar a pasta&lt;b&gt; pt_br&lt;/b&gt; em&lt;b&gt; sirh/system/language&lt;/b&gt;, feito isso, agora abra o arquivo &lt;b&gt;config.php &lt;/b&gt;(dentro da pasta config) e mude a linha 69 para: &lt;b&gt;&lt;span style="color: red;"&gt;$config['language'] = "pt-br";&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Temos então que copiar o arquivo &lt;b&gt;Form_validation.php&lt;/b&gt; da pasta &lt;b&gt;/system/libraries&lt;/b&gt; para a pasta &lt;b&gt;/system/application/libraries&lt;/b&gt;, agora abra o arquivo copiado e procure pela função alpha(), comente o &lt;i&gt;return &lt;/i&gt;dela, e faça a seguinte alteração:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;alpha($str)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//return&amp;nbsp;(&amp;nbsp;!&amp;nbsp;preg_match("/^([a-z])+$/i",&amp;nbsp;$str))&amp;nbsp;?&amp;nbsp;FALSE&amp;nbsp;:&amp;nbsp;TRUE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;(!preg_match("/^([A-Za-zá-úÁ=Ú.\s])+$/i",&amp;nbsp;$str))&amp;nbsp;?&amp;nbsp;FALSE&amp;nbsp;:&amp;nbsp;TRUE;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Modificada a expressão regular, agora é possível trabalhar com palavras acentuadas.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Abra o controller &lt;b&gt;bacia.php&lt;/b&gt;, vamos adicionar a validação nas funções &lt;i&gt;insere()&lt;/i&gt; e &lt;i&gt;atualizar()&lt;/i&gt;. Para isso é necessário Carregar a biblioteca &lt;i&gt;form_validation&lt;/i&gt; no método construtor do controlador:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;__construct()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent::controller();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;model('bacia_model');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;library('form_validation');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A função &lt;i&gt;insert()&lt;/i&gt; ficará assim:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;insere()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;o&amp;nbsp;campo&amp;nbsp;é&amp;nbsp;requerido&amp;nbsp;e&amp;nbsp;deve&amp;nbsp;ser&amp;nbsp;uma&amp;nbsp;string&amp;nbsp;(alpha)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('nome_bacia',&amp;nbsp;'Nome&amp;nbsp;da&amp;nbsp;Bacia',&amp;nbsp;'required|alpha');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;caso&amp;nbsp;a&amp;nbsp;validação&amp;nbsp;não&amp;nbsp;passe,&amp;nbsp;&amp;nbsp;carregue&amp;nbsp;a&amp;nbsp;view com o array $data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&amp;nbsp;($this-&amp;gt;form_validation-&amp;gt;run()&amp;nbsp;==&amp;nbsp;FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Nova&amp;nbsp;Bacia&amp;nbsp;Hidrográfica&amp;nbsp;|&amp;nbsp;Erro&amp;nbsp;na&amp;nbsp;Validação,&amp;nbsp;preencha&amp;nbsp;corretamente!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Criar&amp;nbsp;Bacia&amp;nbsp;Hidrográfica&amp;nbsp;|&amp;nbsp;Preencha&amp;nbsp;Corretamente!";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('bacia_new',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Criado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('bacia');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;e a&lt;i&gt; update()&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;atualizar()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$id&amp;nbsp;=&amp;nbsp;$this-&amp;gt;input-&amp;gt;post('id_bacia');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;form_validation-&amp;gt;set_rules('nome_bacia',&amp;nbsp;'Nome&amp;nbsp;da&amp;nbsp;Bacia',&amp;nbsp;'required|alpha');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;caso&amp;nbsp;a&amp;nbsp;validação&amp;nbsp;não&amp;nbsp;passe, carregue&amp;nbsp;a&amp;nbsp;view com o array $data&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&amp;nbsp;($this-&amp;gt;form_validation-&amp;gt;run()&amp;nbsp;==&amp;nbsp;FALSE)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Editar&amp;nbsp;Bacia&amp;nbsp;Hidrográfica&amp;nbsp;|&amp;nbsp;Erro&amp;nbsp;na&amp;nbsp;Validação,&amp;nbsp;preencha&amp;nbsp;corretamente!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Editar&amp;nbsp;Bacia&amp;nbsp;Hidrográfica&amp;nbsp;|&amp;nbsp;Preencha&amp;nbsp;Corretamente!";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['registro']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_where($id);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('bacia_new',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;update($id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Atualizado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('bacia');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A regra adicionada não permite que o campo "nome" da Bacia Hidrográfica fique sem preenchimento (&lt;i&gt;required&lt;/i&gt;), e será permitido apenas o preenchimento com texto (&lt;i&gt;alpha&lt;/i&gt;). Para sinalizar as mensagens de erro, Abra a view &lt;b&gt;bacia_new.php&lt;/b&gt; e adicione a função abaixo, logo depois do cabeçalho:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;p&amp;gt;&amp;lt;?=&amp;nbsp;validation_errors();&amp;nbsp;?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;É isso... no próximo post vou mostrar como ficará o CRUD da tabela rio. Um abraço e até lá!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-9019456162366218661?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/9019456162366218661/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=9019456162366218661' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/9019456162366218661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/9019456162366218661'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/10/tutorial-codeigniter-parte-4.html' title='Tutorial CodeIgniter - Parte 4'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-2060000152037895178</id><published>2010-09-28T14:12:00.021-03:00</published><updated>2010-10-11T19:57:22.495-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Tutorial CodeIgniter - Parte 3</title><content type='html'>&lt;div style="text-align: justify;"&gt;Neste post, vamos criar as funções que irão realizar as operações inserir, atualizar e deletar os registros da tabela &lt;b&gt;bacia_hidrografica&lt;/b&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Antes de começarmos a criar as funções, vamos habilitar a biblioteca "&lt;a href="http://codeigniter.com/user_guide/libraries/sessions.html"&gt;session&lt;/a&gt;" do codeigniter e o helper "&lt;a href="http://codeigniter.com/user_guide/helpers/form_helper.html"&gt;form&lt;/a&gt;", para isso, abra o arquivo &lt;b&gt;autoload.php&lt;/b&gt; e modifique as linhas 42 e 54, respectivamente para:&lt;/div&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;$autoload['libraries'] = array('database', 'session');&lt;/div&gt;&lt;span style="color: red;"&gt;$autoload['helper'] = array('url', 'form');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vamos começar definindo uma função no model que será responsável por inserir os registros na tabela, abra o arquivo &lt;b&gt;bacia_model.php&lt;/b&gt; e adicione a seguinte função:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;insert()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;$data&amp;nbsp;=&amp;nbsp;$_POST;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$this-&amp;gt;db-&amp;gt;insert('bacia_hidrografica',&amp;nbsp;$data);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;Já a função abaixo, retorna a linha da tabela com o &lt;i&gt;id_bacia&lt;/i&gt; informado, ela será usada para povoar o campo "nome da bacia" do formulário de atualização:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;get_where($id)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;where('id_bacia',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$query&amp;nbsp;=&amp;nbsp;$this-&amp;gt;db-&amp;gt;get('bacia_hidrografica');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$query-&amp;gt;row();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para realizar o update, usaremos a função abaixo:&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;update($id)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data&amp;nbsp;=&amp;nbsp;$_POST;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;where('id_bacia',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;update('bacia_hidrografica',&amp;nbsp;$data);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Para deletar um registro desta tabela, primeiro faz-se necessário verificar se a mesma não possui nenhum rio vinculado, pois isso vai gerar uma mensagem de erro vinda do banco de dados, em função da &lt;i&gt;constraint &lt;b&gt;foreign key&lt;/b&gt;&lt;/i&gt;, logo criaremos a função abaixo que fará essa verificação de vínculo:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;verifica_fk($id)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;where('id_bacia',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$query&amp;nbsp;=&amp;nbsp;$this-&amp;gt;db-&amp;gt;get('rio');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($query-&amp;gt;num_rows&amp;nbsp;&amp;gt;&amp;nbsp;0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;se&amp;nbsp;houver&amp;nbsp;fk,&amp;nbsp;retorne&amp;nbsp;falso&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;De posse da função acima,&amp;nbsp; criaremos a função &lt;i&gt;delete()&lt;/i&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;delete($id)&lt;/pre&gt;&lt;pre class="brush:php"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; //&amp;nbsp;se&amp;nbsp;for&amp;nbsp;verdadeiro,&amp;nbsp;pode&amp;nbsp;apagar&amp;nbsp;o&amp;nbsp;registro&lt;br /&gt;&amp;nbsp;&amp;nbsp; if&amp;nbsp;($this-&amp;gt;verifica_fk($id))&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;db-&amp;gt;where('id_bacia',&amp;nbsp;$id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp;$this-&amp;gt;db-&amp;gt;delete('bacia_hidrografica');&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp;false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre class="brush:php"&gt;}&lt;/pre&gt;&lt;br /&gt;Agora, vamos criar duas funções no controller&lt;b&gt; bacia.php&lt;/b&gt;, uma para chamar o formulário que será utilizado para a inserção de novos registros, e a outra, que será responsável por efetivar esta operação, através da função definida no model anteriormente (função &lt;i&gt;insert()&lt;/i&gt; ):&lt;/div&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;OBS:&lt;/b&gt; Não vamos usar nenhuma função de validação dos dados nesse momento, este será um assunto abordado em um próximo post.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;criar()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Nova&amp;nbsp;Bacia&amp;nbsp;Hidrográfica";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Criar&amp;nbsp;nova&amp;nbsp;Bacia&amp;nbsp;Hidrográfica";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('bacia_new',&amp;nbsp;$data);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function&amp;nbsp;insere()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;insert();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Criado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('bacia');&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Seguindo o mesmo raciocínio, para realizar a atualização dos registros, vamos criar mais duas funções no controller,&lt;i&gt; editar()&lt;/i&gt; e &lt;i&gt;atualizar()&lt;/i&gt;:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;editar($id)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH&amp;nbsp;-&amp;nbsp;Editar&amp;nbsp;Bacia&amp;nbsp;Hidrográfica";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Editar&amp;nbsp;Bacia&amp;nbsp;Hidrográfica";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['registro']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_where($id);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('bacia_new',&amp;nbsp;$data);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function&amp;nbsp;atualizar()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$id&amp;nbsp;=&amp;nbsp;$this-&amp;gt;input-&amp;gt;post('id_bacia');&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;update($id);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Atualizado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('bacia');&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Criamos então a view &lt;b&gt;bacia_new.php&lt;/b&gt;, que tanto servirá para inserir, quanto para atualizar, isso é feito através da verificação da existência da variável &lt;i&gt;$registro-&amp;gt;id_bacia&lt;/i&gt;:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;nbsp;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;nbsp;xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;http-equiv="Content-Type"&amp;nbsp;content="text/html;&amp;nbsp;charset=utf-8"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;?=&amp;nbsp;$titulo&amp;nbsp;?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;&amp;lt;?=&amp;nbsp;$cabecalho&amp;nbsp;?&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//verifica&amp;nbsp;se&amp;nbsp;o&amp;nbsp;form&amp;nbsp;vai&amp;nbsp;ser&amp;nbsp;usado&amp;nbsp;para&amp;nbsp;insert&amp;nbsp;ou&amp;nbsp;update&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!isset($registro-&amp;gt;id_bacia))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;form_open('bacia/insere');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;form_open('bacia/atualizar');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;form_hidden('id_bacia',&amp;nbsp;$registro-&amp;gt;id_bacia);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;label&amp;gt;Nome&amp;nbsp;da&amp;nbsp;Bacia:&amp;lt;/label&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input&amp;nbsp;name="nome_bacia"&amp;nbsp;type="text"&amp;nbsp;id="nome_bacia"&amp;nbsp;size="40"&amp;nbsp;value="&amp;lt;?=&amp;nbsp;@$registro-&amp;gt;nome_bacia&amp;nbsp;?&amp;gt;"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input&amp;nbsp;type="submit"&amp;nbsp;id="Enviar"&amp;nbsp;value="Enviar"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=&amp;nbsp;form_close()&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finalizando o controller &lt;b&gt;bacia.php&lt;/b&gt;, adicionamos a função &lt;i&gt;deletar()&lt;/i&gt;, que vai chamar a função &lt;i&gt;delete()&lt;/i&gt; do model:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;deletar($id)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($this-&amp;gt;bacia_model-&amp;gt;delete($id))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'Registro&amp;nbsp;Deletado&amp;nbsp;com&amp;nbsp;Sucesso!');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;session-&amp;gt;set_flashdata('msg',&amp;nbsp;'ERRO&amp;nbsp;-&amp;nbsp;Não&amp;nbsp;foi&amp;nbsp;possível&amp;nbsp;deletar&amp;nbsp;este&amp;nbsp;registro!&amp;lt;br/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Primeiro&amp;nbsp;apague&amp;nbsp;os&amp;nbsp;Rios&amp;nbsp;que&amp;nbsp;se&amp;nbsp;relacionam&amp;nbsp;com&amp;nbsp;esta&amp;nbsp;Bacia');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redirect('bacia');&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Para terminar, abra o arquivo &lt;b&gt;bacia_view.php&lt;/b&gt; e logo abaixo do cabeçalho, chame a função que irá exibir as mensagens para as operações realizadas pelo usuário:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;?=@$this-&amp;gt;session-&amp;gt;flashdata('msg');?&amp;gt;&amp;lt;/p&amp;gt;&amp;nbsp; &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pronto!!! Já temos um &lt;b&gt;CRUD &lt;/b&gt;funcional para a tabela &lt;b&gt;bacia_hidrografica&lt;/b&gt;, porém sem a validação dos formulários, isso será o assunto da próxima postagem, até lá!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-2060000152037895178?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/2060000152037895178/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=2060000152037895178' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2060000152037895178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2060000152037895178'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/09/crud-basico-com-o-codeigniter-parte-3.html' title='Tutorial CodeIgniter - Parte 3'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-2781375491271436892</id><published>2010-09-26T19:17:00.006-03:00</published><updated>2010-09-28T22:34:35.653-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Tutorial CodeIgniter - parte 2</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Vamos dar continuidade ao desenvolvimento da aplicação usando o &lt;a href="http://codeigniter.com/"&gt;CodeIgniter&lt;/a&gt;, na pasta &lt;b&gt;sirh/system/application/controllers&lt;/b&gt; crie o arquivo&lt;b&gt; bacia.php&lt;/b&gt; com o conteúdo abaixo:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;?php&lt;br /&gt;class Bacia extends Controller&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    function __construct()&lt;br /&gt;    {&lt;br /&gt;        parent::controller();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function index()&lt;br /&gt;    {&lt;br /&gt;        echo "&amp;lt;h1&amp;gt;Testando... 1, 2, 3&amp;lt;/h1&amp;gt;";&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;No código anterior, criamos o controlador bacia, com a função index, que é exibida por default quando o controlador é chamado. Logo ao digitarmos a url:&amp;nbsp; &lt;a href="http://localhost/sirh/index.php/bacia"&gt;http://localhost/sirh/index.php/bacia&lt;/a&gt;, veremos a mensagem de teste (Figura 1).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="211" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/TJ9bf4ZRGII/AAAAAAAAANQ/yrI1QBsBfFk/s400/tela2.png" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Figura 1 - teste do controlador bacia&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_CtoyFdPjkPs/TJ9bf4ZRGII/AAAAAAAAANQ/yrI1QBsBfFk/s1600/tela2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Testado o funcionamento do controller bacia, vamos adicionar o cabeçalho e título da nossa página, modificando o código da função index:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;function&amp;nbsp;index()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH";&lt;br /&gt;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Bacias&amp;nbsp;Hidrográficas";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('bacia_view',&amp;nbsp;$data);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;agora, dentro da pasta &lt;b&gt;views&lt;/b&gt;, em &lt;span style="font-size: small;"&gt;&lt;b&gt;sirh/system/application/&lt;/b&gt;, crie um arquivo com o nome &lt;b&gt;bacia_view.php&lt;/b&gt;, com o seguinte conteúdo:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;nbsp;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN"&amp;nbsp;&lt;br /&gt;&amp;nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;nbsp;xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;http-equiv="Content-Type"&amp;nbsp;content="text/html;&amp;nbsp;charset=utf-8"&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;&amp;lt;?=$titulo?&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;&amp;lt;?=$cabecalho?&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;br /&gt;Abra mais uma vez o endereço &lt;a href="http://localhost/sirh/index.php/bacia"&gt;http://localhost/sirh/index.php/bacia&lt;/a&gt; , o resultado deve ser o da Figura 2&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="185" src="http://3.bp.blogspot.com/_CtoyFdPjkPs/TJ-xn8q15_I/AAAAAAAAANU/QT7FmMh9mxw/s400/tela3.png" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 2 - definidos o título e o cabeçalho da página&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_CtoyFdPjkPs/TJ-xn8q15_I/AAAAAAAAANU/QT7FmMh9mxw/s1600/tela3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Está na hora de inserirmos alguns dados para a visualização, execute o script abaixo no banco, para povoar as duas tabelas:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:sql"&gt;-- INSERINDO 3 Bacias Hidrográficas&lt;br /&gt;INSERT INTO bacia_hidrografica(nome_bacia) VALUES ('Abiaí');&lt;br /&gt;--&lt;br /&gt;INSERT INTO bacia_hidrografica(nome_bacia) VALUES ('Mamanguape');&lt;br /&gt;--&lt;br /&gt;INSERT INTO bacia_hidrografica(nome_bacia) VALUES ('Gramame');&lt;br /&gt;&lt;br /&gt;-- INSERINDO 6 Rios nas suas respectivas Bacias&lt;br /&gt;INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Papocas', 9, 1);&lt;br /&gt;INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Graú', 12, 1);&lt;br /&gt;--&lt;br /&gt;INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Mogeiro', 23, 2);&lt;br /&gt;INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Gavião', 9, 2);&lt;br /&gt;--&lt;br /&gt;INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Guarabira',31, 3);&lt;br /&gt;INSERT INTO rio(nome_rio, comprimento_km, id_bacia) VALUES ('Jacaré', 7, 3);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;vamos agora exibir os dados que foram inseridos na tabela bacia_hidrografica, para isso será necessário criar um model (dentro de &lt;span style="font-size: small;"&gt;&lt;b&gt;sirh/system/application/model)&lt;/b&gt;&lt;/span&gt; , que chamaremos de &lt;b&gt;bacia_model.php&lt;/b&gt;, com o seguinte conteúdo:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;?php&lt;br /&gt;class&amp;nbsp;Bacia_model&amp;nbsp;extends&amp;nbsp;Model&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;&amp;nbsp;__construct()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent::model();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;get_bacia()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;db-&amp;gt;order_by('nome_bacia',&amp;nbsp;'asc');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$query&amp;nbsp;=&amp;nbsp;$this-&amp;gt;db-&amp;gt;get('bacia_hidrografica');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;($query-&amp;gt;num_rows()&amp;nbsp;&amp;gt;&amp;nbsp;0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;$query-&amp;gt;result();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Agora, vamos modificar o nosso controlador, carregando o model criado e povoando uma variável com um array de objetos, obtidos através da função get_bacia():&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;?php&lt;br /&gt;class&amp;nbsp;Bacia&amp;nbsp;extends&amp;nbsp;Controller&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;__construct()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parent::controller();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;model('bacia_model');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;index()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['titulo']&amp;nbsp;=&amp;nbsp;"SIRH";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['cabecalho']&amp;nbsp;=&amp;nbsp;"Bacias&amp;nbsp;Hidrográficas";&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$data['bacias']&amp;nbsp;=&amp;nbsp;$this-&amp;gt;bacia_model-&amp;gt;get_bacia();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$this-&amp;gt;load-&amp;gt;view('bacia_view',&amp;nbsp;$data);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para finalizar esta postagem, vamos agora modificar a nossa view, basicamente vamos varrer o array de objetos $data['bacias'] e exibir os resultados, também vamos utilizar a função &lt;a href="http://codeigniter.com/user_guide/helpers/url_helper.html"&gt;anchor()&lt;/a&gt; do CodeIgniter para definir os links desta página, que serão finalizados no próximo Post:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:php"&gt;&amp;lt;h2&amp;gt;&amp;lt;?=$cabecalho&amp;nbsp;?&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;p&amp;gt;&amp;lt;?=anchor('bacia/criar',&amp;nbsp;'Criar&amp;nbsp;Bacia&amp;nbsp;Hidrográfica')&amp;nbsp;?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;table&amp;nbsp;border="1"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Nome&amp;nbsp;da&amp;nbsp;Bacia&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ações&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/th&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/thead&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;if&amp;nbsp;($bacias&amp;nbsp;!=&amp;nbsp;false):&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;foreach&amp;nbsp;($bacias&amp;nbsp;as&amp;nbsp;$bacia):&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=$bacia-&amp;gt;nome_bacia&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=anchor('bacia/editar/'&amp;nbsp;.&amp;nbsp;$bacia-&amp;gt;id_bacia,&amp;nbsp;'Editar')&amp;nbsp;?&amp;gt;&amp;nbsp;|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?=anchor('bacia/deletar/'&amp;nbsp;.&amp;nbsp;$bacia-&amp;gt;id_bacia,&amp;nbsp;'Deletar')&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;endforeach;&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;else:&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;Não&amp;nbsp;há&amp;nbsp;registros&amp;nbsp;cadastrados!&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;endif&amp;nbsp;?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tbody&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Salve todos os arquivos e abra o navegador e veja o resultado: &lt;a href="http://localhost/sirh/index.php/bacia"&gt;http://localhost/sirh/index.php/bacia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="249" src="http://4.bp.blogspot.com/_CtoyFdPjkPs/TJ_FLbnL0TI/AAAAAAAAANY/L988TDOh0vA/s320/tela4.png" style="margin-left: auto; margin-right: auto;" width="320" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Figura 3 - Exibição das Bacias Hidrográficas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_CtoyFdPjkPs/TJ_FLbnL0TI/AAAAAAAAANY/L988TDOh0vA/s1600/tela4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; Bem pessoal, por hoje é só, para ajudar no entendimento deste exemplo, sugiro dar uma boa olhada na &lt;a href="http://net.tutsplus.com/articles/web-roundups/who-needs-university-the-best-nettuts-screencast-training-courses/"&gt;série de screencasts do Nettus+ sobre o CodeIgniter&lt;/a&gt; (item 5 do link).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-2781375491271436892?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/2781375491271436892/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=2781375491271436892' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2781375491271436892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2781375491271436892'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/09/crud-basico-com-o-codeigniter-parte-2.html' title='Tutorial CodeIgniter - parte 2'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CtoyFdPjkPs/TJ9bf4ZRGII/AAAAAAAAANQ/yrI1QBsBfFk/s72-c/tela2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-2153401897626298710</id><published>2010-09-26T09:45:00.017-03:00</published><updated>2010-09-28T22:34:53.461-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Tutorial CodeIgniter - parte 1</title><content type='html'>&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small; line-height: 115%;"&gt;O &lt;b&gt;CRUD&lt;/b&gt; é definido como acrônimo da expressão inglesa (&lt;b&gt;C&lt;/b&gt;reate &lt;b&gt;R&lt;/b&gt;etrieve &lt;b&gt;U&lt;/b&gt;pdate and &lt;b&gt;D&lt;/b&gt;elete), para as quatro operações básicas utilizadas em um bancos de dados relacionais (RDBMS).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small; line-height: 115%;"&gt;Nesta série de&amp;nbsp; postagens, criaremos uma aplicação Web com CRUD através da linguagem &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt;, para as duas tabelas do modelo lógico da Figura 1, utilizando o Framework &lt;a href="http://codeigniter.com/"&gt;CodeIgniter&lt;/a&gt;. Para codificar, sugiro o uso do &lt;a href="http://netbeans2.org/features/php/index.html"&gt;Netbeans&lt;/a&gt; com o autocomplete do CodeIgniter, este último pode ser baixado no link: &lt;a href="http://rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans/"&gt;http://rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans/&lt;/a&gt; . Já o banco que irei utilizar nesse exemplo, será o &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small; line-height: 115%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: small; line-height: 115%;"&gt;&lt;b style="color: red;"&gt;OBS:&lt;/b&gt; É necessário que o leitor tenha uma base em &lt;a href="http://php.net/manual/en/language.oop5.php"&gt;PHP OO&lt;/a&gt;, pois não vou entrar em muitos detalhes, também sugiro, dar uma boa lida no&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://profmarcello.blogspot.com/2010/08/manual-do-codeigniter-em-portugues.html"&gt; Manual do CodeIgniter em português.&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_CtoyFdPjkPs/TJ86emXwQ4I/AAAAAAAAANE/hY-7SlAIqPQ/s1600/logico_bacia_rio.jpg" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="line-height: 115%;"&gt;Figura 1 – modelo lógico do exemplo&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_CtoyFdPjkPs/TJ86emXwQ4I/AAAAAAAAANE/hY-7SlAIqPQ/s1600/logico_bacia_rio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="font-family: inherit; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="line-height: 115%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="font-family: inherit; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="line-height: 115%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: 12pt; line-height: 115%;"&gt;&amp;nbsp;&lt;/span&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="line-height: 115%;"&gt;1&lt;sup&gt;o &lt;/sup&gt;Passo: criar o banco no PostgreSQL&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small; line-height: 115%;"&gt;Crie um banco com o nome &lt;b&gt;sirh &lt;/b&gt;com a codificação UTF-8 e rode o modelo físico abaixo, observe que as chaves primárias foram definidas como serial, criando automaticamente o auto-incremento para esses dois campos:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="brush:sql"&gt;CREATE TABLE bacia_hidrografica (&lt;br /&gt;id_bacia serial PRIMARY KEY,&lt;br /&gt;nome_bacia varchar(40)&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE rio (&lt;br /&gt;id_rio serial PRIMARY KEY,&lt;br /&gt;nome_rio varchar(40),&lt;br /&gt;comprimento_km int,&lt;br /&gt;id_bacia int,&lt;br /&gt;FOREIGN KEY(id_bacia) REFERENCES bacia_hidrografica (id_bacia)&lt;br /&gt;ON UPDATE CASCADE );&lt;/pre&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;Após rodar o script acima, o seu banco ficará da seguinte forma (Figura 2):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/TJ88kuGtrnI/AAAAAAAAANI/ct9gS8Q1DiE/s1600/banco.png" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;Figura 2 - Banco com as duas tabelas criadas (PgAdmin)&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_CtoyFdPjkPs/TJ88kuGtrnI/AAAAAAAAANI/ct9gS8Q1DiE/s1600/banco.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;2&lt;sup&gt;o &lt;/sup&gt;Passo: download do CodeIgniter&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;Vá até o endereço: &lt;a href="http://codeigniter.com/downloads/"&gt;http://codeigniter.com/downloads/&lt;/a&gt; e baixe a última versão do CI (nesse post, usei a versão 1.7.2), a instalação é bem simples, descompacte o arquivo zipado na pasta de publicação do seu servidor web, no meu caso “/var/www/”, para quem usa o &lt;a href="http://www.maptools.org/ms4w/"&gt;MS4W&lt;/a&gt; (Mapserver for Windows), descompacte na pasta htdocs do servidor.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;Agora, vamos mudar o nome da pasta que foi descompactada para sirh (abreviação de “&lt;b&gt;si&lt;/b&gt;stema para &lt;b&gt;r&lt;/b&gt;ecursos &lt;b&gt;h&lt;/b&gt;ídricos”).&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;3&lt;sup&gt;o &lt;/sup&gt;Passo: configurar a url do sistema e a conexão com o banco PostgreSQL&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;Abra &amp;nbsp;o arquivo &lt;b&gt;config.php&lt;/b&gt;, dentro de &lt;b&gt;sirh/system/application/config&lt;/b&gt;. Mude a linha 14 para &lt;a href="http://localhost/sirh/"&gt;http://localhost/sirh/&lt;/a&gt; , salve o arquivo em seguida.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;Abra o arquivo &lt;b&gt;database.php&lt;/b&gt; (na mesma pasta) e configure a conexão com o banco (em seguida salve o arquivo):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;$db['default']['hostname'] = "localhost";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;$db['default']['username'] = "postgres";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;$db['default']['password'] = "postgres";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;$db['default']['database'] = "sirh";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;$db['default']['dbdriver'] = "postgre";&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;4° Passo: configurar as bibliotecas e os helpers que serão carregados de forma automática&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;Abra o arquivo&lt;b&gt; autoload.php&lt;/b&gt;, modifique a linha 42 para:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;&amp;nbsp;$autoload['libraries'] = array(‘database’);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;e a 54 para:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="color: red; font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span lang="EN-US" style="line-height: 115%;"&gt;$autoload['helper'] = array(‘url’);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;5° Passo: testar a instalação&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;Abra o seu navegador e digite a url: &lt;a href="http://localhost/sirh"&gt;http://localhost/sirh&lt;/a&gt;, você verá a tela da Figura 3, caso a mesma não seja exibida dessa forma, verifique os passos anteriores. No próximo Post continuaremos a desenvolver esta aplicação, até lá!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/_CtoyFdPjkPs/TJ8_tYCtLWI/AAAAAAAAANM/m8DYRw8Go7M/s400/tela1.png" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="line-height: 115%;"&gt;&lt;span style="font-size: x-small;"&gt;figura 3 - tela de boas vindas do codeigniter&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_CtoyFdPjkPs/TJ8_tYCtLWI/AAAAAAAAANM/m8DYRw8Go7M/s1600/tela1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-2153401897626298710?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/2153401897626298710/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=2153401897626298710' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2153401897626298710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/2153401897626298710'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/09/crud-basico-com-o-codeigniter-parte-1.html' title='Tutorial CodeIgniter - parte 1'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CtoyFdPjkPs/TJ86emXwQ4I/AAAAAAAAANE/hY-7SlAIqPQ/s72-c/logico_bacia_rio.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-7350399056266650891</id><published>2010-08-14T09:13:00.008-03:00</published><updated>2010-09-28T14:14:00.358-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeIgniter'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>Manual do CodeIgniter em português</title><content type='html'>Apesar de desatualizada (a versão atual do CI é a 1.7.2), esta tradução pode ser útil para quem tem dificuldade com a língua do tio Sam, bons estudos : )&lt;br /&gt;&lt;br /&gt;&lt;iframe height="594px" src="http://issuu.com/edsonthadeu/docs/guia_do_usu_rio?mode=a_p&amp;amp;wmode=0" width="510px"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-7350399056266650891?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://profmarcello.blogspot.com/2010/08/manual-do-codeigniter-em-portugues.html' title='Manual do CodeIgniter em português'/><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/7350399056266650891/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=7350399056266650891' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/7350399056266650891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/7350399056266650891'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/08/manual-do-codeigniter-em-portugues.html' title='Manual do CodeIgniter em português'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-8512302967531844070</id><published>2010-07-07T16:26:00.056-03:00</published><updated>2010-10-10T08:28:03.626-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Programação'/><title type='text'>PostGIS: conversão de coordenadas em graus decimais para graus, minutos e segundos (e vice-versa)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Recentemente tive que implementar uma solução, onde através de um formulário, o usuário informava as coordenadas em graus, minutos e segundos, logo em seguida era mostrado em um mapa, se essa coordenada caía em uma área válida da aplicação.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Acontece que por padrão, o PostGIS armazena as geometrias no formato decimal, logo eu teria que tratar as coordenadas digitadas (no código PHP ou no Banco), transformando-as em graus decimais, foi aí que eu encontrei duas funções muito úteis na &lt;a href="http://www.mail-archive.com/postgis-users@postgis.refractions.net/msg09755.html"&gt;lista de discussão do PostGIS&lt;/a&gt;. Fiz&amp;nbsp; uma pequena modificação na segunda função, que aumenta a quantidade de casas  decimais dos minutos e segundos, caso do resultado seja um número inteiro nesses dois elementos. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Para utilizá-las é necessário carregá-las em um banco com o PostGIS instalado. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql"&gt;Create or Replace Function DMS2DD(  dDeg In Float,&lt;br /&gt;                                    dMin In Float, &lt;br /&gt;                                    dSec In Float )                                &lt;br /&gt;Returns Float&lt;br /&gt;AS&lt;br /&gt;$BODY$&lt;br /&gt;Declare&lt;br /&gt;   dDD Float;&lt;br /&gt;BEGIN&lt;br /&gt;   dDD := ABS(dDeg) + dMin / 60::float + dSec / 3600::float;&lt;br /&gt;   Return SIGN(dDeg) * dDD;&lt;br /&gt;End;&lt;br /&gt;$BODY$&lt;br /&gt;  LANGUAGE 'plpgsql' IMMUTABLE STRICT&lt;br /&gt;  COST 100;&lt;br /&gt;&lt;br /&gt;create or Replace Function DD2DMS(  dDecDeg in Float,&lt;br /&gt;                                    pDegreeSymbol in VarChar(1),&lt;br /&gt;                                    pMinuteSymbol in VarChar(1),&lt;br /&gt;                                    pSecondSymbol in VarChar(1) )&lt;br /&gt;Returns varchar(50)&lt;br /&gt;AS&lt;br /&gt;$BODY$&lt;br /&gt;DECLARE&lt;br /&gt;   iDeg Int;&lt;br /&gt;   iMin Int;&lt;br /&gt;   dSec Float;&lt;br /&gt;   &lt;br /&gt;BEGIN&lt;br /&gt;&lt;br /&gt;   iDeg := Trunc(dDecDeg)::Int;&lt;br /&gt;   iMin := Trunc(   (Abs(dDecDeg) - Abs(iDeg)) * 60)::Int;&lt;br /&gt;   dSec := Round(((((Abs(dDecDeg) - Abs(iDeg)) * 60) - iMin) * 60)::numeric, 3)::float;&lt;br /&gt;   &lt;br /&gt;Return trim(to_char(iDeg,'9999')) || pDegreeSymbol::text ||&lt;br /&gt;       trim(to_char(iMin,'99.00')) || pMinuteSymbol::text || &lt;br /&gt;       case when dSec = 0::Float&lt;br /&gt;       then '00' else replace(trim(to_char(dSec,'99.999')),'.000','') &lt;br /&gt;       end || pSecondSymbol::text;&lt;br /&gt;END;&lt;br /&gt;$BODY$&lt;br /&gt;  LANGUAGE 'plpgsql' IMMUTABLE STRICT&lt;br /&gt;  COST 100;&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Utilizando as funções:&lt;/b&gt;&lt;br /&gt;&lt;pre class="brush:sql"&gt;-- Converter as coordenadas da geometria &lt;br /&gt;-- POINT(-38.4969 -6.4026) para graus, minutos e segundos:&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT DD2DMS(x(geometryFromText('POINT(-38.4969 -6.4026)')), '°','\'','\"' ) as Longitude,&lt;br /&gt;DD2DMS(y(geometryFromText('POINT(-38.4969 -6.4026)')), '°','\'','\"' ) as Latitude;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Resultado:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Longitude &amp;nbsp; &amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latitude&lt;br /&gt;--------------------------+-----------------------&lt;br /&gt;&lt;span style="color: red;"&gt;-38°29.00'48.840"&lt;/span&gt; | &lt;span style="color: red;"&gt;-6°24.00'9.360"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql"&gt;-- Converter as coordenadas (-34° 10' 50", -7° 33' 30")&lt;br /&gt;-- para graus decimais:&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT DMS2DD(-34,10,50) as longitude,&lt;br /&gt;DMS2DD(-7,33,30) as latitude;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt; Resultado:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Longitude &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Latitude&lt;br /&gt;----------------------------+-----------------------&lt;br /&gt;&lt;span style="color: red;"&gt;-34.1805555555556&lt;/span&gt; | &lt;span style="color: red;"&gt;-7.55833333333333&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-8512302967531844070?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/8512302967531844070/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=8512302967531844070' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8512302967531844070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8512302967531844070'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2010/07/postgis-converter-as-coordenadas.html' title='PostGIS: conversão de coordenadas em graus decimais para graus, minutos e segundos (e vice-versa)'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-8825086482022681588</id><published>2009-09-25T09:58:00.009-03:00</published><updated>2009-09-25T10:29:00.291-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><title type='text'>Corrigindo a Codificação na Exportação de Shapefiles para SQL</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;No processo de exportação de Shapefiles para SQL já podemos modificar a codificação do arquivo gerado para a mesma codificação do Banco, evitando a inserção de caracteres estranhos nas tabelas (&lt;/span&gt;�)&lt;span style="font-size: small;"&gt;. Também é comum nos depararmos com o erro abaixo quando tentamos importar um arquivo .sql na codificação LATIN1 (ou ISO-8859-1) para um Banco de Dados em UTF-8:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;ERRO:&amp;nbsp; sequência de bytes é inválida para codificação "UTF8": 0xed7269&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt;HINT:&amp;nbsp; Este erro pode acontecer também se a sequência de bytes não corresponde a codificação esperado pelo servidor, que é controlada por "client_encoding".&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Para evitar este problema, use o comando &lt;b&gt;shp2psql&lt;/b&gt; junto com o comando &lt;b&gt;iconv&lt;/b&gt;, que é responsável por fazer esta modificação. A sintaxe é a seguinte:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="background-color: #eeeeee; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;shp2pgsql -s SRID&lt;srid&gt; shapefile nome_da_tabela | iconv&amp;nbsp; -f codificacao_de_origem -t codificacao_de_destino&lt;/srid&gt; &amp;gt; arquivo_sql.sql &lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Exemplo:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;shp2pgsql -s 4291 municipios_ibge.shp municipios | iconv -f LATIN1 -t UTF-8 &amp;gt; municipios.sql &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Em seguida, use psql -f municipios.sql -d &lt;i&gt;seu_banco_utf8&lt;/i&gt; para criar a tabela com seus registros.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-8825086482022681588?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://profmarcello.blogspot.com/2009/09/corrigindo-codificacao-na-exportacao-de.html' title='Corrigindo a Codificação na Exportação de Shapefiles para SQL'/><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/8825086482022681588/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=8825086482022681588' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8825086482022681588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8825086482022681588'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2009/09/corrigindo-codificacao-na-exportacao-de.html' title='Corrigindo a Codificação na Exportação de Shapefiles para SQL'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-8147634626337183610</id><published>2009-09-17T16:26:00.057-03:00</published><updated>2009-09-18T08:00:14.379-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><title type='text'>Utilizando Javascript e CSS em aplicações Mapserver via CGI</title><content type='html'>&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;Para finalizar a postagem “&lt;a href="http://profmarcello.blogspot.com/2008/03/integrando-o-mapserver-com-o-postgis.html"&gt;Integrando o Mapserver com o PostGIS&lt;/a&gt;” vou disponibilizar &lt;a href="http://cefetpbgeo.googlepages.com/cadastro.zip"&gt;aqui&lt;/a&gt;&amp;nbsp; uma aplicação Mapserver CGI que utiliza algumas funções Javascript em um &lt;i&gt;layout&lt;/i&gt; baseado em CSS (&lt;i&gt;Cascading Style Sheets&lt;/i&gt; – CSS).&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;Esta aplicação também roda no Windows através do pacote &lt;a href="http://www.maptools.org/ms4w/"&gt;MS4W&lt;/a&gt;. Veja como configurá-la através do arquivo como_instalar.txt.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_CtoyFdPjkPs/SrKbnN-C0qI/AAAAAAAAAJk/05BV50J_XIk/s1600-h/Captura_de_tela.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_CtoyFdPjkPs/SrKbnN-C0qI/AAAAAAAAAJk/05BV50J_XIk/s400/Captura_de_tela.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://cefetpbgeo.googlepages.com/cadastro.zip"&gt;Link para baixar o arquivo&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;Fico a disposição de vocês caso haja alguma dúvida sobre o código.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-8147634626337183610?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/8147634626337183610/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=8147634626337183610' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8147634626337183610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/8147634626337183610'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2009/09/utilizando-javascript-e-css-em.html' title='Utilizando Javascript e CSS em aplicações Mapserver via CGI'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_CtoyFdPjkPs/SrKbnN-C0qI/AAAAAAAAAJk/05BV50J_XIk/s72-c/Captura_de_tela.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-1116274273100470930</id><published>2009-02-03T16:18:00.014-03:00</published><updated>2010-09-29T08:34:53.078-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><category scheme='http://www.blogger.com/atom/ns#' term='pmapper'/><category scheme='http://www.blogger.com/atom/ns#' term='Atlas Digital'/><category scheme='http://www.blogger.com/atom/ns#' term='SRH'/><title type='text'>Sistema de Informações dos Recursos Hídricos do Ceará</title><content type='html'>&lt;div style="text-align: justify;"&gt;Depois de um bom tempo sem postar, resolvi comentar uma consultoria que realizei recentemente para a &lt;a href="http://www.srh.ce.gov.br/"&gt;Secretaria de Recursos Hídricos do Ceará&lt;/a&gt;, utilizando as seguintes tecnologias: PHP, Linux (Fedora), PostgreSQL/PostGIS, Mapserver e o &lt;span style="font-style: italic;"&gt;Framework &lt;/span&gt;Pmapper.&lt;br /&gt;&lt;br /&gt;Realmente foi um desafio desenvolver este projeto em tão pouco tempo (cerca de dois meses e meio). Tivemos que &lt;span style="font-weight: bold;"&gt;migrar e remodelar&lt;/span&gt; a base de dados que estava no &lt;span style="font-style: italic;"&gt;Microsoft &lt;/span&gt;SQL Server  para o PostgreSQL, já a base de dados espaciais estava em Shapefile e também foi exportada para o Banco através da extensão espacial PostGIS. Só a tabela de poços possuía mais de &lt;span style="font-weight: bold;"&gt;16 mil registros!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para minha surpresa e felicidade, o Atlas SRH ainda foi escolhido como o &lt;b&gt;&lt;a href="http://www.mundogeo.com.br/noticias-diarias.php?id_noticia=16769"&gt;melhor Software Livre da edição 2009 do Prêmio Ceará de Cidadania Eletrônica&lt;/a&gt;.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O esforço valeu a pena, me sinto hoje realizado, além de ter aprendido muito com este trabalho. Acredito que o resultado ficou a contento da &lt;a href="http://www.srh.ce.gov.br/"&gt;SRH&lt;/a&gt;, que venham os novos desafios!!!&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://atlas.srh.ce.gov.br/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" height="194" id="BLOGGER_PHOTO_ID_5298657862491233282" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/SYidQKAe3AI/AAAAAAAAAII/d4nGMM61lXg/s320/atlas_srh_2.png" style="float: right; height: 194px; margin: 0pt 0pt 10px 10px; width: 320px;" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://atlas.srh.ce.gov.br/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298660325888805810" src="http://3.bp.blogspot.com/_CtoyFdPjkPs/SYiffi4Oy7I/AAAAAAAAAIQ/9FhP_pd1DDQ/s320/atlas_srh_3.png" style="float: right; height: 196px; margin: 0pt 0pt 10px 10px; width: 320px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://atlas.srh.ce.gov.br/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298657856822889826" src="http://4.bp.blogspot.com/_CtoyFdPjkPs/SYidP05CzWI/AAAAAAAAAIA/N4EplA-qfRg/s320/atlas_srh.png" style="float: right; height: 194px; margin: 0pt 0pt 10px 10px; width: 320px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://atlas.srh.ce.gov.br/" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5298660327977683522" src="http://1.bp.blogspot.com/_CtoyFdPjkPs/SYiffqqQikI/AAAAAAAAAIY/HXEKvoWUf4I/s320/atlas_srh_4.png" style="float: right; height: 194px; margin: 0pt 0pt 10px 10px; width: 320px;" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-1116274273100470930?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://atlas.srh.ce.gov.br/' title='Sistema de Informações dos Recursos Hídricos do Ceará'/><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/1116274273100470930/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=1116274273100470930' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/1116274273100470930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/1116274273100470930'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2009/02/sistema-de-informacoes-dos-recursos.html' title='Sistema de Informações dos Recursos Hídricos do Ceará'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_CtoyFdPjkPs/SYidQKAe3AI/AAAAAAAAAII/d4nGMM61lXg/s72-c/atlas_srh_2.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-3014197483824320706</id><published>2008-03-02T11:06:00.017-03:00</published><updated>2009-09-17T15:12:55.516-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><title type='text'>Integrando o Mapserver com o PostGIS</title><content type='html'>&lt;span style="color: black; font-size: 85%;"&gt;Com base nos posts anteriores (&lt;/span&gt;&lt;a href="http://profmarcello.blogspot.com/2007/03/instalando-extenso-espacial-postgis-no_05.html"&gt;&lt;span style="color: #000099; font-size: 85%;"&gt;1&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-size: 85%;"&gt; e &lt;/span&gt;&lt;a href="http://profmarcello.blogspot.com/2007/03/instalando-o-mapserver-com-php.html"&gt;&lt;span style="color: #000099; font-size: 85%;"&gt;2&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black; font-size: 85%;"&gt;) podemos criar uma aplicação Webmapping que utilize dados armazenados em um BDE. Para este primeiro tutorial, os da&lt;/span&gt;&lt;span style="color: black; font-size: 85%;"&gt;dos utilizados estão disponíveis neste &lt;a href="http://cefetpbgeo.googlepages.com/scripts.zip"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Carregando os sripts SQL no BDE.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;No terminal, navegue até a pasta onde você salvou e descompactou os arquivos e digite: &lt;b&gt;psql -f lotes.sql -d gis (enter)&lt;/b&gt;, em seguida digite novamente &lt;b&gt;psql -f vias.sql -d gis (enter)&lt;/b&gt;, desta forma você criará duas tabelas no Banco, &lt;b&gt;lotes&lt;/b&gt; e &lt;b&gt;vias&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;br /&gt;&lt;b&gt;2. Criando o arquivo Mapfile:&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Abra um editor de texto qualquer e digite o seguit&lt;/span&gt;&lt;span style="color: black; font-size: 85%;"&gt;e conteúdo:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;MAP&lt;/span&gt;&lt;br /&gt;NAME 'Mapa 1'&lt;br /&gt;SIZE 600 400&lt;br /&gt;EXTENT 295090 9211971 296291 9212708&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black; font-size: 85%;"&gt;UNITS meters&lt;br /&gt;IMAGECOLOR 247 247 247&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;LAYER&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;NAME 'lotes'&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;STATUS Default&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;TYPE Polygon&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;CONNECTIONTYPE postgis&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;CONNECTION "dbname=geo user=postgres host=localhost password=postgres"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #6600cc;"&gt;DATA "the_geom FROM lotes USING UNIQUE gid USING SRID=29185"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;CLASS&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;NAME 'lotes'&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;STYLE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;COLOR 255 234 190&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;OUTLINECOLOR 0 0 0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="color: #009900;"&gt;END #style&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;span style="color: black; font-size: 85%;"&gt;&lt;br /&gt;&lt;span style="color: #000099;"&gt;END #class&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #663366;"&gt;END #layer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;END #Fim do Mapfile&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-size: 85%;"&gt;Salve este arquivo como postgis.map em seguida feche-o.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;b&gt;3. Visualizando o mapa de forma estátic&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;b&gt;a&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;Abra Browser e digite: &lt;a href="http://localhost/cgi-bin/mapserv?map=/var/www/postgis.map&amp;amp;mode=map"&gt;http://localhost/cgi-bin/mapserv?map=/var/www/postgis.map&amp;amp;mode=map&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;Como resultado será exibido o mapa da figura abaixo: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5173662857883815954" src="http://bp3.blogger.com/_CtoyFdPjkPs/R8yK9T_MEBI/AAAAAAAAAEU/z4AsKwmtLZU/s320/Captura_da_tela-mapserv+%28Imagem+GIF,+600x400+pixels%29+-+Mozilla+Firefox-1.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;b&gt;4. Adicionando a camada vias, diferenciado-a por tipo de pavimento&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Altere o Mapfile, adicionando as linhas mostradas em vermelho, a seguir:&lt;br /&gt;&lt;br /&gt;MAP&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;NAME 'CTM'&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;SIZE 600 400&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana; font-size: 85%;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;EXTENT 295090 9211971 296291 9212708&lt;br /&gt;UNITS meters&lt;br /&gt;IMAGECOLOR 247 247 247&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;# Símbolo criado para mudar a espessura dos arcos (camada vias)&lt;br /&gt;SYMBOL&lt;br /&gt;NAME 'linha'&lt;br /&gt;TYPE ELLIPSE&lt;br /&gt;POINTS&lt;br /&gt;1 1&lt;br /&gt;END&lt;br /&gt;END&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;LAYER&lt;br /&gt;NAME 'lotes'&lt;br /&gt;STATUS Default&lt;br /&gt;TYPE Polygon&lt;br /&gt;CONNECTIONTYPE postgis&lt;br /&gt;CONNECTION 'dbname=gis user=marcello host=localhost password=x'&lt;br /&gt;DATA 'the_geom FROM lotes'&lt;br /&gt;CLASS&lt;br /&gt;NAME 'lotes'&lt;br /&gt;STYLE&lt;br /&gt;COLOR 255 234 190&lt;br /&gt;OUTLINECOLOR 0 0 0&lt;br /&gt;END #style&lt;br /&gt;END #class&lt;br /&gt;END #lotes&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;#Aqui começa o segundo layer&lt;br /&gt;LAYER&lt;br /&gt;NAME 'vias'&lt;br /&gt;STATUS Default&lt;br /&gt;TYPE Line&lt;br /&gt;CONNECTIONTYPE postgis&lt;br /&gt;CONNECTION "dbname=gis user=marcello host=localhost password=x"&lt;br /&gt;DATA "the_geom FROM vias USING UNIQUE gid USING SRID=29185"&lt;br /&gt;&lt;br /&gt;CLASSITEM 'pavimentac'&lt;br /&gt;&lt;br /&gt;CLASS&lt;br /&gt;NAME 'Asfalto'&lt;br /&gt;EXPRESSION 'Asfalto'&lt;br /&gt;STYLE&lt;br /&gt;SYMBOL linha&lt;br /&gt;SIZE 3&lt;br /&gt;COLOR 168 0 0&lt;br /&gt;END #style&lt;br /&gt;END #class&lt;br /&gt;&lt;br /&gt;CLASS&lt;br /&gt;NAME 'Paralelepípedo'&lt;br /&gt;EXPRESSION 'Paralelepípedo'&lt;br /&gt;STYLE&lt;br /&gt;SYMBOL linha&lt;br /&gt;SIZE 2&lt;br /&gt;COLOR 0 38 115&lt;br /&gt;END #style&lt;br /&gt;END #class&lt;br /&gt;&lt;br /&gt;CLASS&lt;br /&gt;NAME 'Solo'&lt;br /&gt;EXPRESSION 'Solo'&lt;br /&gt;STYLE&lt;br /&gt;SYMBOL linha&lt;br /&gt;SIZE 1&lt;br /&gt;COLOR 255 85 0&lt;br /&gt;END #style&lt;br /&gt;END #class&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;END #vias&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;END #Fim do Mapfile &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Verdana;"&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: 85%;"&gt;Abra o browser novamente, digite a mesma URL anterior e observe a nova camada criada:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5173664489971388450" src="http://bp3.blogger.com/_CtoyFdPjkPs/R8yMcT_MECI/AAAAAAAAAEc/LK2blpi5yOM/s320/Captura_da_tela-mapserv+%28Imagem+GIF,+600x400+pixels%29+-+Mozilla+Firefox-2.png" style="cursor: pointer; display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-3014197483824320706?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/3014197483824320706/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=3014197483824320706' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/3014197483824320706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/3014197483824320706'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2008/03/integrando-o-mapserver-com-o-postgis.html' title='Integrando o Mapserver com o PostGIS'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_CtoyFdPjkPs/R8yK9T_MEBI/AAAAAAAAAEU/z4AsKwmtLZU/s72-c/Captura_da_tela-mapserv+%28Imagem+GIF,+600x400+pixels%29+-+Mozilla+Firefox-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-604437891581052117</id><published>2007-09-27T16:43:00.002-03:00</published><updated>2010-10-11T20:04:24.680-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AESA'/><category scheme='http://www.blogger.com/atom/ns#' term='Mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='pmapper'/><title type='text'>Utilização do Mapserver no gerenciamento dos Recursos Hídricos do Estado da Paraíba</title><content type='html'>&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;1. Introdução&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;A escassez da oferta hídrica é um dos problemas mais graves enfrentados a nível mundial. Na região nordeste do Brasil, este problema se agrava em função da variação climática, do crescimento da demanda e dos usos múltiplos da água, além da má distribuição dos Recursos hídricos no espaço e no tempo.&lt;br /&gt;&lt;br /&gt;A Agência Executiva de Gestão das Águas do Estado da Paraíba (AESA) tem como principal atribuição, gerenciar com racionalidade os recursos hídricos do Estado, assegurando as demandas dos usuários, fazendo uso dos instrumentos das leis federal e estadual, resguardando o meio ambiente e o bem estar do homem, de forma a garantir o desenvolvimento sustentável.&lt;br /&gt;&lt;br /&gt;Como ferramenta de apoio à tomada de decisão, os Sistemas de Informações Geográficas (SIG), possibilitam aos gestores uma série de funcionalidades que contribuem diretamente em um melhor gerenciamento dos recursos hídricos. Através do SIG é possível gerar mapas e cartas que mostrem, por exemplo, quais áreas estão desabastecidas, ou onde estão as localidades que necessitam de uma maior oferta hídrica, e a partir daí, realizar análises espaciais e estatísticas visando amenizar tais problemas.&lt;br /&gt;&lt;br /&gt;No entanto, o usuário final deve ter acesso às informações processadas de um SIG de uma forma rápida e fácil em uma interface amigável. Neste contexto, os programas de Webmapping disponibilizam dados espaciais na Web, permitindo que qualquer pessoa, através de um navegador (browser), possa interagir com mapas dinâmicos através de comandos como zoom, pan, realizar consultas, além criar mapas temáticos e relatórios.&lt;br /&gt;&lt;br /&gt;Com o objetivo de possibilitar ao visitante do Portal AESA acesso de forma rápida e fácil a diversas informações georreferenciadas do Estado, foi desenvolvida uma aplicação Webmapping utilizando Mapserver e o framework Pmapper. Através da interface deste aplicativo, batizado de SIGAESA-WEB qualquer pessoa pode consultar informações sobre bacias hidrográficas, sistemas aqüíferos, pluviometria média, adutoras, além das informações qualitativas e quantitativas sobre os rios e açudes, dentre outros níveis de informação.&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;2. Tecnologias Utilizadas&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style="font-size: 85%;"&gt;A base cartográfica disponibilizada pelo aplicativo é composta de elementos que foram obtidos junto ao IBGE, tais como: limites estaduais, divisão municipal e sedes municipais. Outras feições como, rios, açudes, bacias hidrográficas, postos fluviométricos, dentre outros, foram confeccionados na própria agência através de técnicas de digitalização e de classificação de imagens de satélite, utilizando imagens CBERS 2 CCD (2006), LANDSAT 7 (2006) e SRTM (2006).&lt;br /&gt;&lt;br /&gt;Já os programas utilizados foram os seguintes:&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt; &lt;div align="left"&gt;&lt;span style="font-size: 85%;"&gt;Sistema operacional: Linux Fedora Core 7;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div align="left"&gt;&lt;span style="font-size: 85%;"&gt;Servidor Apache com PHP;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div align="left"&gt;&lt;span style="font-size: 85%;"&gt;Editor Web: NVU;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div align="left"&gt;&lt;span style="font-size: 85%;"&gt;Editor de arquivos Mapfile: Scite;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div align="left"&gt;&lt;span style="font-size: 85%;"&gt;Banco de Dados: PostgreSQL/PostGIS;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt; &lt;div align="left"&gt;&lt;span style="font-size: 85%;"&gt;Pmapper v.3.1&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="left"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;3. Implementação do Sistema&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;A configuração do aplicativo iniciou-se com a instalação e configuração do servidor Apache com o PHP no Fedora, em seguida foram instalados a partir dos fontes as seguintes bibliotecas: proj, gd, libpng, libgeotiff, zlib, geos, postgresql, postgis, gdal e o mapserver, a medida que eram requeridas algumas dependências destas bibliotecas no processo de compilação, outros pacotes também foram baixados e instalados utilizando o comando yum, presente nesta distro.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;O próximo passo foi exportar as feições geográficas que estavam no formato shapefile para o Banco de Dados Espaciais, tal procedimento foi realizado através do comando shp2pgsql, que gera um script SQL a partir da leitura dos arquivos shapes. Em seguida entrou em cena a configuração do pmapper, que é um framework de fácil configuração, já que para colocarmos a aplicação para “rodar”, necessitamos apenas criar o arquivo mapfile, o qual define a forma como os níveis de informação serão exibidos, e em seguida configurar a aplicação através dos arquivos de configuração do próprio pmapper. O tempo total gasto durante todo este processo, se somarmos a isso a customização do pmapper, foi de aproximadamente 70 horas de trabalho.&lt;br /&gt;&lt;br /&gt;A figura 1 mostra o esquema de funcionamento do aplicativo SIGAESA-WEB.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5114973976119955890" src="http://bp0.blogger.com/_CtoyFdPjkPs/RvwJuyH_UbI/AAAAAAAAACI/3b4KUZHn2fU/s400/figura1.png" style="display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 85%;"&gt;Figura 1 – Esquema do funcionamento do aplicativo SIGAESA-WEB&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;4. Resultados&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Através da interface do aplicativo, qualquer usuário tem acesso imediato a uma série de informações, dentre as quais destacam-se o monitoramento diário do volume dos açudes (figura 2).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5114975006912106946" src="http://bp0.blogger.com/_CtoyFdPjkPs/RvwKqyH_UcI/AAAAAAAAACQ/oaYoTjjYMyI/s400/figura2.png" style="display: block; margin: 0px auto 10px; text-align: center;" /&gt; &lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 85%;"&gt;Figura 2 – Consulta ao volume de um açude&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Estão também disponíveis dados sobre a qualidade da água dos rios e açudes monitorados pela Superintendência de Administração do Meio Ambiente do Estado – SUDEMA (figura 3).&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5114976273927459282" src="http://bp3.blogger.com/_CtoyFdPjkPs/RvwL0iH_UdI/AAAAAAAAACY/X9sajuBJGyU/s400/figura3.png" style="display: block; margin: 0px auto 10px; text-align: center;" /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;span style="font-size: 85%;"&gt;Figura 3 – Consulta à qualidade da água de um rio&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;5. Conclusões&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Antes da disponibilização deste aplicativo Webmapping no portal da AESA, não havia oportunidades de análise e identificação dos problemas hídricos pela população em geral. Porém após sua implementação, observou-se um crescente interesse da sociedade e também de outros órgãos do estado por tais informações, que antes estavam disponíveis apenas para os técnicos da agência, ou a pesquisadores e estudantes que tinham que se deslocar até a mesma. Desta forma o aplicativo também contribuiu para diminuir a burocracia de acesso a essas informações.&lt;br /&gt;&lt;br /&gt;Do ponto de vista financeiro, a solução adotada utilizou apenas softwares livres, proporcionando uma grande economia na aquisição das licenças de programas proprietários similares.&lt;br /&gt;&lt;br /&gt;O SIGAESA-WEB destacou-se como uma ferramenta de fácil manuseio, e alcançou seu principal objetivo, que é o de disseminar informações espaciais na Web para a sociedade de forma mais fácil e rápida, tanto para os gestores quanto para a sociedade como um todo.&lt;br /&gt;&lt;br /&gt;Como trabalho futuro, deseja-se incluir no aplicativo os pontos outorgados e cadastrados dos usuários de recursos hídricos do estado.&lt;br /&gt;&lt;br /&gt;Por fim, a AESA espera tornar-se em alguns anos um modelo regional na gestão de recursos hídricos através de ações que possibilitem avançar em torno do desenvolvimento sustentável e da gestão participativa.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;Site do SIGAESA-WEB: &lt;a href="http://www.aesa.pb.gov.br/geoprocessamento/"&gt;http://www.aesa.pb.gov.br/geoprocessamento/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-604437891581052117?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/604437891581052117/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=604437891581052117' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/604437891581052117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/604437891581052117'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2007/09/utilizao-do-mapserver-no-gerenciamento.html' title='Utilização do Mapserver no gerenciamento dos Recursos Hídricos do Estado da Paraíba'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_CtoyFdPjkPs/RvwJuyH_UbI/AAAAAAAAACI/3b4KUZHn2fU/s72-c/figura1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-557274516134613825</id><published>2007-09-27T15:24:00.000-03:00</published><updated>2007-09-28T14:49:17.161-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Alov Map'/><title type='text'>Criando uma aplicação Webmapping com o Alov map</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;O Alov map é um publicador de mapas gratuito, desenvolvido através da linguagem Java que pode ser implementado na forma de applet ou servlet. Na versão servlet os dados ficam armazenados em um SGBD e são enviados ao cliente de forma incremental, através do botão de “ligar/desligar camada”, já na versão applet, todos os dados são enviados ao cliente no momento em que a página é carregada no browser.&lt;br /&gt;&lt;br /&gt;Embora a versão servlet seja mais flexível, neste tutorial vamos trabalhar inicialmente na versão applet deste programa, que é bem mais fácil de configurar para usuários iniciantes. Mais detalhes sobre o alov podem ser encontrados no site &lt;/span&gt;&lt;a href="http://alov.org/"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;http://alov.org&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;Para visualizar a página que será criada neste tutorial é necessário que você tenha a máquina virtual Java (JVM), ou o JRE instalados no seu computador.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;1&lt;sup&gt;o&lt;/sup&gt; Passo – Download do Alov Map:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Para baixar o Alov é necessário que o usuário faça um registro na página de downloads do site, após este registro, baixe a versão applet do programa, como mostra a figura 1 abaixo:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5114953446176280978" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 411px; CURSOR: hand; HEIGHT: 177px; TEXT-ALIGN: center" height="174" alt="" src="http://bp3.blogger.com/_CtoyFdPjkPs/Rvv3DyH_UZI/AAAAAAAAAB4/nkdAmPlFGVU/s400/figura1.jpg" width="438" border="0" /&gt; &lt;p align="center"&gt;&lt;span style="font-size:85%;"&gt;Figura 1 – baixando a versão Applet.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-size:85%;"&gt;Os dados deste tutorial podem ser baixados no site: &lt;/span&gt;&lt;a href="http://geo.marcello.googlepages.com/municipios.zip"&gt;&lt;span style="font-size:85%;"&gt;http://geo.marcello.googlepages.com/municipios.zip&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;2&lt;sup&gt;o&lt;/sup&gt;Passo – Preparando a aplicação:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Coloque os arquivos baixados em uma mesma pasta de sua escolha, não é necessário descompactar o arquivo shapefile zipado (municipios.zip). A seguir vamos criar dois arquivos para que o aplicativo funcione, um no formato XML e outro no formato HTML.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;3&lt;sup&gt;o&lt;/sup&gt; Passo – Criando o arquivo XML de configuração dos layers:&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Neste arquivo iremos definir a forma na qual os dados serão apresentados no Alov, à medida que fomos passando para os outros tutoriais, este arquivo irá sendo alterado de forma gradativa. Através de um editor de texto de sua escolha, crie um arquivo chamado config.xml com o conteúdo abaixo:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;?xml version="1.0" encoding="ISO-8859-1"?&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&amp;lt;project zoomunits="km" mapunits="degrees"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#003300;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;layer name="Municipios" visible="yes" showlegend="yes"&amp;gt;&lt;br /&gt;&amp;lt;dataset url="municipios.zip" /&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#330033;"&gt;&amp;lt;renderer&amp;gt;&lt;br /&gt;&amp;lt;symbol fill="211:255:190" outline="38:115:0" /&amp;gt;&lt;br /&gt;&amp;lt;/renderer&amp;gt;&lt;br /&gt;&lt;/span&gt;&amp;lt;/layer&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;&lt;strong&gt;Explicando...&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;A linha 1 indica que este arquivo é um XML, e qual é a sua codificação.&lt;br /&gt;&lt;br /&gt;Na linha 2 inicia-se a tag projeto, todos os dados que serão mostrados no aplicativo devem ser declarados em algum lugar dentro do projeto, também foram definidos dois atributos para essa tag, um indicando que as unidades de zoom estão em quilômetros (zoomunits="km") e outro indicando que as unidades do mapa estão em graus decimais (mapunits="degrees"). A linha 9 fecha o projeto iniciado na linha 2.&lt;br /&gt;&lt;br /&gt;Na linha 3 inicia-se um layer, onde o seu nome foi definido como municípios (name="Municipios"), que estará visível quando o Alov for inicializado (visible="yes") e terá uma legenda mostrando a sua cor e/ou símbolos utilizados (showlegend="yes"). A linha 8 indica o final da definição do layer.&lt;br /&gt;&lt;br /&gt;Na linha 4 é definido o local e nome do arquivo shapefile desta camada (url="municipios.zip"), observe que não é necessário descompactá-lo, já que o Alov é capaz de ler arquivos no formato zip.&lt;br /&gt;&lt;br /&gt;A linha 5 inicia a tag renderer onde dentro dela, definiremos a aparência do layer através da tag symbol. Os atributos fill e outline definem respectivamente as cores de preenchimento e da cor da borda do polígono na escala RGB. A linha 8 fecha a tag renderer.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;4&lt;sup&gt;o&lt;/sup&gt; Passo – Criando o arquivo HTML:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;No arquivo HTML será colocado a diretiva applet, responsável por carregar a janela do aplicativo. Para isso, crie um arquivo chamado mapa.html com o conteúdo abaixo:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;br /&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Webmapping&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;&amp;lt;applet codebase ="."&lt;br /&gt;code="org.alov.viewer.SarApplet"&lt;br /&gt;archive="alov_applet.jar"&lt;br /&gt;width="650" height="400" align="center"&amp;gt;&lt;br /&gt;&amp;lt;param name="pid" value="config.xml"&amp;gt;&lt;br /&gt;&amp;lt;/applet&amp;gt;&lt;br /&gt;&lt;/span&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Explicando...&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;As linhas 1 e 2 indicam o doctype do arquivo HTML, a linha 3 inicia a tag html com o atributo namespace e a linha 16 fecha o tag html.&lt;br /&gt;&lt;br /&gt;A linha 4 inicia a tag do cabeçalho (head), onde é definido o título do documento através da tag title, na linha 6. A linha 7 fecha a tag head.&lt;br /&gt;&lt;br /&gt;O conteúdo da página é definido dentro do corpo (body), ou seja, entre as linhas 8 e 15.&lt;br /&gt;&lt;br /&gt;A linha 9 inicia a tag applet, indicando que o arquivo alov_applet.jar está na mesma pasta em que o HTML se encontra (codebase =”.”), em seguida são informados o nome da classe java (linha 10) e o nome do arquivo que deve ser carregado (linha 11).&lt;br /&gt;&lt;br /&gt;Na linha 12 são passados os parâmetros de largura, altura e alinhamento da janela do applet.&lt;br /&gt;&lt;br /&gt;Por fim, na linha 13 temos a tag param, que informa o nome do applet (name=”pid”) e o nome do arquivo XML (value=”config.xml”), já a linha 14 fecha a tag applet. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;5&lt;sup&gt;o&lt;/sup&gt; Passo – Visualizando a aplicação:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Abra o arquivo mapa.html e veja como ficou sua primeira aplicação Alov Map, se não aparecer a página mostrada abaixo, verifique se não há algum erro no seu código, ou se a máquina virtual Java não está instalada no seu computador. No próximo post veremos como construir alguns mapas temáticos e como habilitar o modo de consulta por atributos. Um Abraço!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img id="BLOGGER_PHOTO_ID_5114965721192812962" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_CtoyFdPjkPs/RvwCOSH_UaI/AAAAAAAAACA/urbM3dR8xi8/s400/figura2.jpg" border="0" /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:georgia;font-size:85%;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-557274516134613825?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/557274516134613825/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=557274516134613825' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/557274516134613825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/557274516134613825'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2007/09/criando-uma-aplicao-webmapping-com-o.html' title='Criando uma aplicação Webmapping com o Alov map'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_CtoyFdPjkPs/Rvv3DyH_UZI/AAAAAAAAAB4/nkdAmPlFGVU/s72-c/figura1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-3755109938816257924</id><published>2007-03-09T13:58:00.001-03:00</published><updated>2010-10-10T08:31:38.110-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mapserver'/><title type='text'>Instalando o Mapserver com PHP Mapscript no Ubuntu</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;Umas das formas mais fáceis de se instalar o Mapserver no Ubuntu é através do gerenciador de pacotes synaptic, neste tutorial vamos ver que este processo, ao contrário do que muita gente acha, é bastante simples. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: georgia;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;1. Instalando o Apache com PHP&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;/b&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-size: 85%;"&gt;No Gnome, clique em &lt;b&gt;Sistema &amp;gt; Administração &amp;gt; Gerenciador de Pacotes Synaptic&lt;/b&gt;. Clique em procurar e digite apache, selecione os pacotes:&lt;b&gt; apache2, apache2-common, apache2-doc&lt;/b&gt;. Clique em aplicar, e em aplicar novamente. Aguarde o download dos pacotes e a instalação. &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;Repita o procedimento para instalar o PHP, escolhendo os pacotes: &lt;b&gt;php5, libapache2-mod-php5, php5-cgi&lt;/b&gt; e &lt;b&gt;php5-common&lt;/b&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;2. Instalando o Mapserver com PHP mapscript&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;&lt;/b&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;/b&gt;&lt;span style="font-size: 85%;"&gt;Ainda no Synaptic, clique em procurar e digite mapserver, selecione os seguintes pacotes para instalação: &lt;b&gt;cgi-mapserver, mapserver-bin, mapserver-doc e php5-mapscript&lt;/b&gt;. Reinicie o servidor apache digitando no Terminal &lt;b&gt;sudo /etc/init.d/apache2 restart&lt;/b&gt; .&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;Mude as permissões para a pasta onde serão armazenadas as páginas a serem criadas, digitando no Terminal &lt;b&gt;sudo chmod 775 /var/www&lt;/b&gt; (enter).&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;3. Verificando a Instalação&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;Abra o seu navegador e digite: &lt;/span&gt;&lt;a href="http://localhost/cgi-bin/mapserv" target="_blank"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;http://localhost/cgi-bin/mapserv&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;, você verá uma página em branco com a seguinte mensagem: &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: georgia;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;&lt;span style="color: #000066;"&gt;No query information to decode. QUERY_STRING is set, but empty.&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;Isto indica que o mapserver foi instalado corretamente. Vamos agora verificar se o módulo PHP Mapscript também está OK, abra um editor de texto qualquer (gedit, VI, etc.) e digite o seguinte conteúdo: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;&amp;lt;?php&lt;br /&gt;phpinfo();&lt;br /&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;Salve este arquivo em &lt;b&gt;/var/www&lt;/b&gt; com o nome &lt;b&gt;phpinfo.php&lt;/b&gt;. Para finalizar, digite no navegador &lt;/span&gt;&lt;a href="http://localhost/phpinfo.php"&gt;&lt;span style="font-size: 85%;"&gt;http://localhost/phpinfo.php&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size: 85%;"&gt; , ao carregar a página, procure pelo quadro mostrado na figura abaixo, contendo as informações sobre o módulo Mapscript.&lt;/span&gt;&lt;/div&gt;&lt;img alt="" border="0" height="292" id="BLOGGER_PHOTO_ID_5039980095613529954" src="http://bp1.blogger.com/_CtoyFdPjkPs/RfGbMaoVb2I/AAAAAAAAAA8/Y7yZcqYjdbI/s400/mapscript.png" style="display: block; margin: 0px auto 10px; text-align: center;" width="443" /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;No próximo post, vou mostrar como criar uma aplicação com Mapserver e PostGIS. Até lá!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-3755109938816257924?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/3755109938816257924/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=3755109938816257924' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/3755109938816257924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/3755109938816257924'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2007/03/instalando-o-mapserver-com-php.html' title='Instalando o Mapserver com PHP Mapscript no Ubuntu'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_CtoyFdPjkPs/RfGbMaoVb2I/AAAAAAAAAA8/Y7yZcqYjdbI/s72-c/mapscript.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-1633147113333265744</id><published>2007-03-06T16:24:00.000-03:00</published><updated>2007-03-09T14:59:36.115-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><title type='text'>Usando o Postgis com o Quantum Gis no Ubuntu</title><content type='html'>&lt;span style="font-size:85%;"&gt;Dando seqüência ao último post, vamos agora importar um arquivo shapefile contendo o mapa do Brasil para o nosso BDG, depois iremos visualizar esta tabela no QGIS. Para este tutorial faça o download do arquivo que se encontra no &lt;span style="FONT-STYLE: italic"&gt;link&lt;/span&gt; abaixo:&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;http://www.gismaps.com.br/divpol/divisao_politica.zip&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Após baixar o arquivo, é só descompactá-lo&lt;/span&gt;&lt;span style="font-size:85%;"&gt; em um diretório da sua escolha.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;1. Utilizando o comando shp2pgsql para converter os shapes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No Terminal, vá até a pasta em que você salvou o arquivo e depois digite &lt;span style="FONT-WEIGHT: bold"&gt;shp2pgsql -s 4291 BRASIL.shp estados_br &gt; estados_br&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold"&gt;.sql&lt;/span&gt; (enter)&lt;br /&gt;Onde:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;-s 4291&lt;/span&gt; indica o SRID (Identificação do Sistema de Referência Espacial) referente ao Datum SAD69 e as coordenadas geográficas.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;BRASIL.shp&lt;/span&gt; é o nome do arquivo shapefile que iremos converter em sql.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;estados_br &lt;/span&gt;é o nome da tabela que será criada no banco.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold"&gt;estados_br.sql&lt;/span&gt; é o nome do arquivo sql a ser gerado neste mesmo diretório.&lt;br /&gt;&lt;br /&gt;Se você não errou nada, verá a mensagem abaixo, indicando que o arquivo sql foi criado.&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold; COLOR: rgb(51,0,153)"&gt;Shapefile type: Polygon&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="COLOR: rgb(51,0,153)"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;Postgis type: MULTIPOLYGON[2]&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Criado o arquivo estados.sql, vamos importá-lo para o banco, digite&lt;span style="FONT-WEIGHT: bold"&gt; psql -f estados_br.sql -d gis &lt;/span&gt;(enter).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;2. Vizualizando a tabela no QGIS&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Baixe e instale o QGIS pelo synaptic, após sua instalação, abra-o, e vá até o ícone &lt;span style="FONT-WEIGHT: bold"&gt;Add a PostGIS Layer&lt;/span&gt;. Agora clique em &lt;span style="FONT-WEIGHT: bold"&gt;novo&lt;/span&gt; e informe os parâmetros da conexão, como mostra a figura abaixo:&lt;/span&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:0;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_CtoyFdPjkPs/Re8D-FnmupI/AAAAAAAAAAk/wyDMVL3nWXg/s1600-h/Criar+nova+conex%C3%A3o+PostGIS.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039250873245940370" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_CtoyFdPjkPs/Re8D-FnmupI/AAAAAAAAAAk/wyDMVL3nWXg/s400/Criar+nova+conex%C3%A3o+PostGIS.png" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Clique agora em conectar, escolha a tabela e clique em adicionar para visualizar o mapa do Brasil, como mostra a figura abaixo:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_CtoyFdPjkPs/Re8FtVnmuqI/AAAAAAAAAAs/k4fC--jL-LY/s1600-h/Captura_da_tela-Quantum+GIS+-0.8.0+%28%27Titan%27%29.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5039252784506387106" style="WIDTH: 418px; CURSOR: pointer; HEIGHT: 245px" alt="" src="http://bp0.blogger.com/_CtoyFdPjkPs/Re8FtVnmuqI/AAAAAAAAAAs/k4fC--jL-LY/s400/Captura_da_tela-Quantum+GIS+-0.8.0+%28%27Titan%27%29.png" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-1633147113333265744?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/1633147113333265744/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=1633147113333265744' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/1633147113333265744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/1633147113333265744'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2007/03/usando-o-postgis-com-o-quantum-gis-no.html' title='Usando o Postgis com o Quantum Gis no Ubuntu'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_CtoyFdPjkPs/Re8D-FnmupI/AAAAAAAAAAk/wyDMVL3nWXg/s72-c/Criar+nova+conex%C3%A3o+PostGIS.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-38486525.post-6306769457831125069</id><published>2007-03-05T17:05:00.003-03:00</published><updated>2010-12-21T13:59:05.890-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostGIS'/><title type='text'>Instalando a Extensão Espacial PostGIS no Ubuntu – Guia Rápido</title><content type='html'>&lt;span xmlns=""&gt;&lt;span style="color: black; font-family: georgia;"&gt;&lt;b&gt;Este passo a passo mostra uma das formas de se instalar o PostgreSQL + PostGIS no Ubuntu.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="color: black; font-family: georgia; font-size: 85%;"&gt;&lt;b&gt;1. Editando a lista de repositórios:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;No Gnome, vá até Aplicações &amp;gt; Acessórios &amp;gt; Terminal e digite &lt;b&gt;sudo gedit /etc/apt/sources.list&lt;/b&gt; (enter) em seguida informe a senha de root. &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;&lt;br /&gt;Retire agora o caractere # das linhas que começam com a palavra deb para "descomentá-las", salve e feche o arquivo. &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;&lt;br /&gt;No Terminal digite &lt;b&gt;sudo apt-get update&lt;/b&gt; (enter) para atualizar a lista de repositórios. Terminado a atualização, vamos agora até o Synaptic começar o processo de instalação dos pacotes. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: georgia; font-size: 85%;"&gt;&lt;b&gt;2. Baixando e instalando os pacotes:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: black; font-family: georgia; font-size: 85%;"&gt;Vamos abrir o Synaptic, para isso siga até Preferências &amp;gt; Administração &amp;gt; Gerenciador de Pacotes Synaptic, em seguida entre com a senha de root (caso seja requisitada).&lt;br /&gt;No Synaptic, clique em procurar, e digite postgis. Aparecerá as opções da figura abaixo:&lt;/span&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;img alt="" border="0" height="182" id="BLOGGER_PHOTO_ID_5038541650985534338" src="http://bp1.blogger.com/_CtoyFdPjkPs/Rex-760Aw4I/AAAAAAAAAAc/ol5euTicSs0/s400/synaptic.png" style="display: block; height: 129px; margin: 0px auto 10px; text-align: center; width: 360px;" width="433" /&gt; &lt;div align="justify"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;Selecione os pacotes para instalação postgresql-x-postgis (onde x é a versão mais recente) e postgis, bem como as dependências sugeridas, clique em aplicar e aguarde o download e instalação dos pacotes.&lt;br /&gt;Terminado a instalação destes pacotes, instale agora o pgadmin3 através do mesmo procedimento anterior.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Criando um Banco de Dados e um usuário:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-family: georgia;"&gt;&lt;div align="justify"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;Nesta etapa voltaremos até o Terminal para configurar o banco que será criado, para isso digite sudo su (enter), entre com a senha de root, depois su postgres (enter). Agora com o usuário postgres poderemos criar nosso primeiro BD.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;Digite &lt;b&gt;createdb gis &lt;/b&gt;(enter), onde &lt;b&gt;gis&lt;/b&gt; é o nome do nosso banco.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;Agora vamos criar um usuário do postgresql, digite &lt;b&gt;createuser nome_do_usuario&lt;/b&gt; (enter), onde nome_do_usuario pode ser o seu login do Linux, no meu caso o comando ficou assim: &lt;b&gt;createuser marcello&lt;/b&gt;, surgirá a seguinte pergunta no Terminal:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: #000066;"&gt;&lt;b&gt;A nova role poderá criar um super-usuário? (s/n)&lt;/b&gt; &lt;span style="color: black;"&gt;digite &lt;b&gt;s&lt;/b&gt; (enter).&lt;/span&gt;&lt;br /&gt;&lt;b&gt;CREATE ROLE&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;Agora volte para o seu usuário digitando &lt;b&gt;su seu_login&lt;/b&gt; (enter), em seguida digite &lt;b&gt;psql gis&lt;/b&gt; (enter) para acessar o banco criado.&lt;br /&gt;Já no banco, vamos definir uma senha para o usuário criado anteriormente, no meu caso foi feito da seguinte forma:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;b&gt;&lt;span style="color: #000066;"&gt;gis=# ALTER USER marcello PASSWORD 'nova_senha' ; (enter)&lt;br /&gt;ALTER ROLE&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="color: black;"&gt;Finalizada esta estapa, vamos agora instalar a extensão geográfica.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: black;"&gt;4. Carregando a Extensão PostGIS&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;span style="font-size: 85%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: black; font-family: georgia; font-size: 85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="color: black; font-family: georgia; font-size: 85%;"&gt;Vá até o diretório onde se encontram os arquivos SQL necessários para carregar a extensão PostGIS, para isso, digite no terminal &lt;b&gt;cd /usr/share/postgresql/8.4/contrib/postgis-x&lt;/b&gt; (enter).&lt;br /&gt;Em seguida criaremos a linguagem plpgsql necessária para o funcionamento do PostGIS, digite &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="color: black;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;b&gt;createlang plpgsql gis &lt;/b&gt;(enter)&lt;br /&gt;Para carregar as extensões digite os comandos: &lt;b&gt;psql -f postgis.sql -d gis&lt;/b&gt; (enter) e para finalizar &lt;b&gt;psql -f spatial_ref_sys.sql -d gis&lt;/b&gt; (enter).&lt;br /&gt;Caso não tenha ocorrido nenhum problema nos passos anteriores, o postgis foi instalado corretamente.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/38486525-6306769457831125069?l=profmarcello.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://profmarcello.blogspot.com/feeds/6306769457831125069/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=38486525&amp;postID=6306769457831125069' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/6306769457831125069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/38486525/posts/default/6306769457831125069'/><link rel='alternate' type='text/html' href='http://profmarcello.blogspot.com/2007/03/instalando-extenso-espacial-postgis-no_05.html' title='Instalando a Extensão Espacial PostGIS no Ubuntu – Guia Rápido'/><author><name>Marcello Benigno</name><uri>http://www.blogger.com/profile/04788803214628621473</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://bp0.blogger.com/_CtoyFdPjkPs/SHz5TMQ2KbI/AAAAAAAAAFg/j-xqVA6swtI/S220/geobr2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_CtoyFdPjkPs/Rex-760Aw4I/AAAAAAAAAAc/ol5euTicSs0/s72-c/synaptic.png' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
