quinta-feira, 16 de fevereiro de 2017

Traccar SQLServer + LibTIFF with Cygwin

https://scan.coverity.com/projects/233

Working with 32 bits.

#TODO LPKCFLAGS = -g -O2 -Wall -W
CFLAGS=-m32 -O1 -W -Wall -pedantic -std=c99

#TODO LPK
#QLDFLAGS =
LDFLAGS = -m32


https://mail.gnome.org/archives/vala-list/2012-March/msg00126.html

http://code.metager.de/source/xref/lib/opencv/3rdparty/

http://www.openexr.com/index.html
http://ffmpeg.org/

http://www.zlib.net/

setup-x86_64.exe -q -P wget -P gcc-g++ -P make -P diffutils -P libmpfr-devel -P libgmp-devel -P libmpc-devel

/scripts/o2dll.sh -o libtiff.dll -l libtiff tif_aux.o tif_close.o tif_codec.o tif_color.o tif_compress.o tif_dir.o tif_dirinfo.o tif_dirread.o tif_dirwrite.o tif_dumpmode.o tif_error.o tif_extension.o tif_fax3.o tif_fax3sm.o tif_flush.o tif_getimage.o tif_jpeg.o tif_luv.o tif_lzw.o tif_next.o tif_ojpeg.o tif_open.o tif_packbits.o tif_pixarlog.o tif_predict.o tif_print.o tif_read.o tif_strip.o tif_swab.o tif_thunder.o tif_tile.o tif_unix.o tif_version.o tif_warning.o tif_write.o tif_zip.o libtiff-dllversion.o libtiff-dll-res.o -no-undefined -version-number 3:8:2 -Wl,--major-image-version=3 -Wl,--minor-image-version=8 -lc



cd /home/flapuinka/libtiff2/src/tiff/3.8.2/tiff-3.8.2-src/tools

  windres --include-dir ../res -i ../res/tiffsplit-res.rc -o tiffsplit-res.o
 
  gcc -DINSTALLDIR=\"/usr/local\" -DENABLE_RELOCATABLE  -DHAVE_CONFIG_H -I. -I. -I../libtiff -I../libtiff -I../libtiff    -g -O2 -Wall -W -MT tiffsplit.o -MD -MP -MF ".deps/tiffsplit.Tpo" -c -o tiffsplit.o tiffsplit.c; \
..
../libtool --tag=CC --mode=link gcc  -g -O2 -Wall -W  -Wl,--major-image-version=3 -Wl,--minor-image-version=8 -o tiffsplit.exe  tiffsplit-res.o tiffsplit.o ../libtiff/libtiff.la ../port/libport.la -lc

../libtiff/libtiff.la
../port/libport.la


Change the traccar.xml


/opt/traccar/lib/sqljdbc42.jar
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://SQLSERVER;databaseName=traccar;


username
password

usr
password

Download the file bellow and copy to traccar/lib

sqljdbc4.jar (java 1.7) or  sqljdbc42.jar (java 1.8)

Create the database


USE [traccar]
GO
/****** Object:  Table [traccar].[attribute_aliases]    Script Date: 13/02/2017 11:35:52 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [traccar].[attribute_aliases](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [deviceid] [int] NOT NULL,
    [attribute] [varchar](128) NOT NULL,
    [alias] [varchar](128) NOT NULL,
 CONSTRAINT [PK_ATTRIBUTE_ALIASES] PRIMARY KEY CLUSTERED
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO



USE [traccar]
GO
/****** Object:  StoredProcedure [traccar].[usp_PesquisarMensagem]    Script Date: 16/02/2017 07:59:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO



ALTER proc [traccar].[usp_PesquisarMensagem]
   @cha_id int = null ,
    @men_data_recebimento datetime = null,
 @par_id_autor int = null,
 @dataInicial datetime = null,
 @dataFinal   datetime = null,
 @men_status_processamento int = null,
 @PAGINA_ATUAL AS INT    = 1,
 @TOTAL_REGISTROS AS INT = 500,
 @QTDEREGISTRO VARCHAR(10) = null  OUT ,
 @men_latitude  DECIMAL(12,9)= -25.413983449005833, --onde o usuário está para buscar os pontos
 @men_longitude DECIMAL(12,9) = -49.250501990318305 , --onde o usuário está para buscar os pontos
 @ProximidadeMetros varchar(100) = '0' ,-- valor dado em KM  ou 0 para exibir tudo
 @Dono int = null,
 @distancia numeric = null,
 @debug int = 1,
 @exibeAmostrarInvalidas int = 0 --Se deseja mostrar todos os registros independente de correcoes

/*
    
 Exemplo:
 
 --Lista todas as Bikes (os veículos em geral)
 --select id,name,category from devices order by name asc

 exec usp_PesquisarMensagem @cha_id=7
   ,@men_data_recebimento=null
   ,@par_id_autor=0,@dataInicial='Jul  3 2016 12:00AM'
   ,@dataFinal='Jul  3 2016 11:59PM'
   ,@men_status_processamento=0
   ,@PAGINA_ATUAL=1
   ,@TOTAL_REGISTROS=100
   ,@QTDEREGISTRO=null
   ,@men_latitude=-25.425601934
   ,@men_longitude=-49.277093410
   ,@ProximidadeMetros=4773 --valor dado em KM 4773 
   ,@Dono=0
   ,@distancia=0
   ,@debug=0
   ,@exibeAmostrarInvalidas=1

*/
as
begin

--select @ProximidadeMetros = '156412' ,@debug=1,@exibeAmostrarInvalidas=1

if(@debug=1)
begin
    if(isnull(object_id('DebugLog'),0)=0)
 begin
  create table dbo.DebugLog
  (
    id int identity(1,1),
   txt varchar(8000),
   dt datetime default getdate()
   )
  end

 declare @txt varchar(8000)
 select @txt = 'exec usp_PesquisarMensagem @cha_id='+isnull(convert(varchar(50),@cha_id),'null')+
  ',@men_data_recebimento='+isnull(convert(varchar(50),@men_data_recebimento ),'null')+
  ',@par_id_autor='+isnull(convert(varchar(50),@par_id_autor) ,'null')+
  ',@dataInicial='+char(39)+isnull(convert(varchar(50),@dataInicial),'null')+char(39)+
  ',@dataFinal='+char(39)+isnull(convert(varchar(50),@dataFinal)   ,'null')+char(39)+
  ',@men_status_processamento='+isnull(convert(varchar(50),@men_status_processamento) ,'null')+ 
  ',@PAGINA_ATUAL='+isnull(convert(varchar(50),@PAGINA_ATUAL) ,'null')+
  ',@TOTAL_REGISTROS='+isnull(convert(varchar(50),@TOTAL_REGISTROS ) ,'null')+
  ',@QTDEREGISTRO='+isnull(convert(varchar(50),@QTDEREGISTRO ) ,'null')+
  ',@men_latitude='+isnull(convert(varchar(50),@men_latitude ) ,'null')+
  ',@men_longitude='+isnull(convert(varchar(50),@men_longitude) ,'null')+ 
  ',@ProximidadeMetros='+isnull(convert(varchar(50),@ProximidadeMetros),'null')+
  ',@Dono='+isnull(convert(varchar(50),@Dono ),'null')+
  ',@Debug='+isnull(convert(varchar(50),@Debug ),'null')+
  ',@exibeAmostrarInvalidas='+isnull(convert(varchar(50),@exibeAmostrarInvalidas ),'null')+
  ',@distancia='+isnull(convert(varchar(50),@distancia ),'null')
 insert DebugLog(txt)values(
 @txt)
end
SET TRANSACTION ISOLATION LEVEL  READ UNCOMMITTED
set nocount on
declare @agora datetime

select @agora = getdate()


 if(@cha_id<=0)
  select @cha_id = null
  


 if(@Dono<=0)
  select @Dono = null

 if(@par_id_autor<=0)
  select @par_id_autor = null

 if(@men_status_processamento<=0)
  select @men_status_processamento = null

 if(@men_latitude=0)
  select @men_latitude = null

 if(@men_longitude=0)
  select @men_longitude = null

 if(@ProximidadeMetros='0')
  select @ProximidadeMetros = null

    

     SET @QTDEREGISTRO =
    (
  
 -- declare @cha_id int, @par_id_autor int
---  select @cha_id = 2,@par_id_autor=2
  select count(1)
    from traccar.vw_Mensagem  m
    inner join 
    (
      select
      max(m.men_id) as men_id
       from traccar.vw_Mensagem m
     where (m.cha_id = @cha_id       or @cha_id is null)
      and   (m.par_id_autor = @par_id_autor     or @par_id_autor is null)
      group by m.cha_id, men_latitude,men_longitude

    ) as query
    on m.men_id = query.men_id
  )

  if(isnull(object_id('tempdb..#mensagem'),0)<>0)
  drop table #mensagem 

     create table #mensagem
  (
    rownumber int identity(1,1),
    men_id int,
    men_idPai int,
    men_data_recebimento datetime,
    men_texto varchar (7000),
    par_id_autor int,
    cha_id int,
    men_data_processamento datetime,
    men_status_processamento int,
    men_latitude decimal(12,9),
    men_longitude decimal(12,9),
    men_data_expiracao datetime,
    distancia  decimal(15,6),
    raioDistancia decimal(15,6),
    deltaSeconds numeric

  )  
  insert #mensagem(
    men_id ,
    men_idPai ,
    men_data_recebimento,
    men_texto ,
    par_id_autor ,
    cha_id ,
    men_data_processamento ,
    men_status_processamento ,
    men_latitude ,
    men_longitude ,
    men_data_expiracao,
    distancia
  )
     select
    m.men_id
        , null
  , m.men_data_recebimento
  , m.men_texto
  , isnull(m.par_id_autor,0) as par_id_autor
  , isnull( m.cha_id,0) as cha_id
  , m.men_data_processamento
  , m.men_status_processamento
  , isnull(m.men_latitude,0) as men_latitude
  , isnull(m.men_longitude,0)  as men_longitude
  ,m.men_data_expiracao
  ,0
  from traccar.vw_Mensagem  m
  inner join 
  (
    select
    max(m.men_id) as men_id
        from traccar.vw_Mensagem   m
   where (m.cha_id = @cha_id       or @cha_id is null)
   and   (m.par_id_autor = @par_id_autor     or @par_id_autor is null)
--   and   (m.men_status_processamento = @men_status_processamento or @men_status_processamento is null)
   and   (m.men_data_recebimento between @DataInicial and @DataFinal or (@DataInicial is null or @DataFinal is null))
      --and   (m.men_data_expiracao > @agora )
   --   and datediff(day, m.men_data_recebimento, getdate()) = 0
    group by m.cha_id, men_latitude,men_longitude

  ) as query
  on m.men_id = query.men_id
  where (m.cha_id = @cha_id       or @cha_id is null)
  order by [men_id] asc
  --OFFSET ((@PAGINA_ATUAL - 1) * @TOTAL_REGISTROS) ROWS
 --FETCH NEXT @TOTAL_REGISTROS ROWS ONLY



update #mensagem 
set 
 #mensagem.raioDistancia=rpt.raioDistancia
 ,#mensagem.distancia=rpt.distancia
 ,#mensagem.deltaSeconds=rpt.DeltaSeconds
from
(
 
   select  a.rownumber,distancia = convert(decimal(15,6),( geography::Point(isnull(a.men_latitude,0), isnull(a.men_longitude,0), 4326)
   .STDistance(geography::Point( isnull(b.men_latitude,0), isnull(b.men_longitude,0), 4326)))) / 1 --km
    , raioDistancia = convert(decimal(15,6),(geography::Point(isnull(a.men_latitude,0), isnull(a.men_longitude,0), 4326)
   .STDistance(geography::Point( isnull(@men_latitude,0), isnull(@men_longitude,0), 4326))))/1  --km
   ,datediff(second,b.men_data_recebimento,a.men_data_recebimento) as DeltaSeconds
   ,a.men_latitude
   ,@men_latitude as men_latitude1
   ,a.men_longitude
   ,@men_longitude as men_longitude1
  from #mensagem a
     left outer join #mensagem b
  on a.rownumber = b.rownumber  + 1
) as rpt
where rpt.rownumber = #mensagem.rownumber

  alter table #mensagem
  drop column rownumber

  alter table #mensagem
  add  rownumber int identity(1,1)

     declare @men_id int
  select @men_id = max(men_id) from #mensagem

    if(isnull(object_id('tempdb..#mensagem2'),0)<>0)
   drop table #mensagem2 

     create table #mensagem2
  (
    rownumber int identity(1,1),
    men_id int,
    men_idPai int,
    men_data_recebimento datetime,
    men_texto varchar (7000),
    par_id_autor int,
    cha_id int,
    men_data_processamento datetime,
    men_status_processamento int,
    men_latitude decimal(12,9),
    men_longitude decimal(12,9),
    men_data_expiracao datetime,
    distancia  numeric,
    raioDistancia numeric,
    deltaSeconds   numeric

  )  
  insert #mensagem2(
    distancia,
    raioDistancia,
    men_id ,
    men_idPai ,
    men_data_recebimento,
    men_texto ,
    par_id_autor ,
    cha_id ,
    men_data_processamento ,
    men_status_processamento ,
    men_latitude ,
    men_longitude ,
    men_data_expiracao,
    deltaSeconds
  )
  select 
    distancia,
    raioDistancia,
    a.men_id ,
    a.men_idPai,
    a.men_data_recebimento,
    a.men_texto as men_texto,
    a.par_id_autor ,
    a.cha_id ,
    a.men_data_processamento ,
    a.men_status_processamento ,
    a.men_latitude ,
    a.men_longitude ,
    a.men_data_expiracao,
    a.deltaSeconds

  from #mensagem a
  union 
   select 
    distancia,
    raioDistancia,
    a.men_id,
    a.men_idPai ,
    a.men_data_recebimento,
    a.men_texto,
    a.par_id_autor ,
    a.cha_id ,
    a.men_data_processamento ,
    a.men_status_processamento ,
    a.men_latitude ,
    a.men_longitude ,
    a.men_data_expiracao,
    a.deltaSeconds
    
  from #mensagem a 
  where men_id = @men_id
  order by [men_id] asc


  alter table #mensagem2
  drop column rownumber



  alter table #mensagem2
  add  rownumber int identity(1,1)
   select 
    ROW_NUMBER() OVER(ORDER BY [men_id] ASC) AS 'rownumber',
    a.distancia,
    a.raioDistancia,
    isnull(a.deltaSeconds,0) as deltaSeconds,
    isnull(case when deltaSeconds = 0 then 340  /*velocidade da barreira do som*/ else ((a.distancia) /(deltaSeconds) )end,0)  as velocidadeMetroSegundo,
    a.men_id ,
    a.men_idPai,
    a.men_data_recebimento,
    '{"velocidade":"'+convert(varchar(50),((3.6) * round(isnull(convert(varchar(50), isnull(case when deltaSeconds = 0 then 340  /*velocidade da barreira do som*/ else ((a.distancia) /(deltaSeconds) )end,0)),'-1'),4) )  )+'" , "raio":"'+isnull(convert(varchar(50),@ProximidadeMetros)+'/'+convert(varchar(50),a.raioDistancia),'-1')+'","rownumber" : "' + isnull(convert(varchar(10),rownumber),'-1') + '"},' + a.men_texto + ', { "distance" : "' + convert(varchar(10),distancia) + '"}' as men_texto,
    a.par_id_autor ,
    a.cha_id ,
    a.men_data_processamento ,
    a.men_status_processamento ,
    a.men_latitude  as men_longitude ,
    a.men_longitude as  men_latitude ,
    a.men_data_expiracao

 --   into ##mensagem3
  from #mensagem2 a
    where ( (isnull(@ProximidadeMetros,0) = 0 )or convert(numeric,raioDistancia) <= convert(numeric,@ProximidadeMetros))
   and (@exibeAmostrarInvalidas = 1 OR isnull(case when deltaSeconds = 0 then 340  /*velocidade da barreira do som*/ else ((a.distancia) /(deltaSeconds) )end,0) < 340)
   order by [men_id] asc


 end

Postar um comentário