Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  22 2499
Skal lage en rapport, som må være på PDF format (bestemt av kunden). Rapporten skal inneholde en del tekst, samt noen grafer.
Problemet er at datagrunnlaget for disse grafene er ganske stort. Har prøvd å gå via COM interface mot Excel, men det tar for lang tid (og den Excel versjonen vi har på jobb, takler bare 32000 elementer i en serie i en graf).

Har også testet ut PDF Charts fra http://www.fytek.com/, men det viste seg at den ikke klarer å håndtere datagrunnlaget heller (ble for mye for den).

Totalt er det vel ca 360 grafer som skal lages (i samme PDF dokument), der ca 80 av dem inneholder mesteparten av dataene. Totalt ca 4,5 millioner datapunkter.

Spørsmålet er om noen vet om en komponent jeg kan bruke til en slik oppgave.
Bruker et ganske sært programmeringsspråk (Visual Dataflex), så det må enten funke ved at jeg kan skrive en fil, som så komponenten genererer PDF rapport fra, eller så må jeg ha et com interface / DLL som jeg kan bruke. Kan desverre ikke bruke .NET her.

Det gjør ikke noe om aktuell software/komponent koster noen kr., men trenger en trial så jeg kan se at det faktisk vil virke.
Det burde være enkelt å lage dette selv med html+css og svg for grafene. Så kan du kjøre dette igjennom PrinceXML, og vips så har du en pdf-fil. PrinceXML konverterer svg til vektorgrafikk i pdf-fila, så du kan zoome inn så mye du vil.

Hva slags grafer er det du skal ha?
Sist endret av Kråkelefse; 11. august 2010 kl. 21:52.
Kan du kanskje forklare litt mer om:
- Rapporten (hvordan er den laget, settes den sammen av data du allerede har, hvordan er de systematisert)
- Plottene (er de alle av samme typen?)
- Dataene (hvordan er de lagret? kan de eksporteres til noe standardisert? csv? osv.)

Personlig ville jeg løst denne typen problemstilling ved å eksportere plotdata til et dataformat som gjorde at jeg kunne f.eks. brukt python med scipy/matplotlib og så ordna sammen noe latex/make-greier for å generere PDF-en, men det spørs jo veldig på oppsettet ditt, begrensninger rundt datatyper og så videre.
Trådstarter
Sitat av Kråkelefse Vis innlegg
Det burde være enkelt å lage dette selv med html+css og svg for grafene. Så kan du kjøre dette igjennom PrinceXML, og vips så har du en pdf-fil. PrinceXML konverterer svg til vektorgrafikk i pdf-fila, så du kan zoome inn så mye du vil.

Hva slags grafer er det du skal ha?
Vis hele sitatet...
Har desverre ikke jobbet noe særlig med teknologiene du nevner her, men skal sjekke de ut i morgen, for å se om det er noe vi kan gå videre med (litt tidpress er det jo alltid, og da er det greit med noe man kjenner fra før).

Det er en god del forskjellige grafer som skal lages. F.eks. elektriske forbruksverdier pr. minutt, over en periode på 1 måned. I tilleg forskjellige beregninger på disse minuttsverdiene, som igjen generer en haug med data.

Bare serie med minuttsverdier pr. måned, gir 44640 minuttsverdier.
Det blir nok fort problemer med excel på grunn av grensen på antallet felt, men for plotteprogramvare ment til vitenskaplig bruk er ikke det veldig store datasett.

Hvis du kan eksportere dataene til csv (kommaseparerte verdier, standardisert format) kan du lett lese dem inn med python sin csv-modul til et numpy-array og så plotte med matplotlib eller noe. Skrev selv et script for å visualisere over hundre tusen datapunkter i dag og det gikk på et par minutter å parse og rendre hele greia.

I forhold til å ha en ferdig modul så vet jeg ikke helt - jeg kjenner ikke til visual dataflex og jeg ser for meg at det kanskje kan bli slitsomt hvis du ikke kan noe scripting overhode, men i forhold til å lage løsningen selv med gratis komponenter er python nok blant de enkleste alternativene.
http://docs.python.org/library/csv.html
http://matplotlib.sourceforge.net/
Trådstarter
Sitat av ivioynar Vis innlegg
Kan du kanskje forklare litt mer om:
- Rapporten (hvordan er den laget, settes den sammen av data du allerede har, hvordan er de systematisert)
- Plottene (er de alle av samme typen?)
- Dataene (hvordan er de lagret? kan de eksporteres til noe standardisert? csv? osv.)

Personlig ville jeg løst denne typen problemstilling ved å eksportere plotdata til et dataformat som gjorde at jeg kunne f.eks. brukt python med scipy/matplotlib og så ordna sammen noe latex/make-greier for å generere PDF-en, men det spørs jo veldig på oppsettet ditt, begrensninger rundt datatyper og så videre.
Vis hele sitatet...
Rapporten er ikke ferdig laget enda, men jeg har laget et program som trekker ut data, og behandler dem (genererer grunnlagsdata for grafer og tekst som skal være med). Det som står igjen, er å finne en måte å generere PDF av de data jeg nå håndterer i programmet mitt.

Data ligger i enten en Pervasive database, eller en MSSQL database (det kan vi velge). Etter å ha kjørt tester, så ser jeg at det går nesten dobbelt så raskt å trekke ut data fra Pervasive databasen, som fra MSSQL databasen, så da blir det nok Pervasive som brukes.

Det store problemet her, som i de fleste prosjekter, er at man ikke har tid nok til å gå inn i nye teknologier. Er godt mulig løsningen du skisserer kunne virket, men har desverre ikke tid til å lære meg Python/scipy/matplotlib/Latex før dette prosjektet må være klart.

Det beste hadde derfor vært en software komponent som kan ta imot disse datamengdene, og generere PDF for meg. PDF script, som jeg viste til i første posten, fungerte egentlig akkurat slik jeg ønsket, men feilet når datamengdene ble store (laget bare en kjapp test med 50 grafer med dummy minuttsverdier for en måned, og da var det stopp).

Vi bruker Visual Dataflex til å programmere systemet vårt, og vil helst fortsette med det, men det har jo sine mangler. Det gjør at mulighetene våre er litt begrenset på hva vi kan inteface mot. Helst DLL (ikke .NET, selv om jeg jo kan skrive en wrapper), COM eller kommandolinje.

Takker uansett for svar

Sitat av ivioynar Vis innlegg
Hvis du kan eksportere dataene til csv (kommaseparerte verdier, standardisert format) kan du lett lese dem inn med python sin csv-modul til et numpy-array og så plotte med matplotlib eller noe. Skrev selv et script for å visualisere over hundre tusen datapunkter i dag og det gikk på et par minutter å parse og rendre hele greia.

I forhold til å ha en ferdig modul så vet jeg ikke helt - jeg kjenner ikke til visual dataflex og jeg ser for meg at det kanskje kan bli slitsomt hvis du ikke kan noe scripting overhode, men i forhold til å lage løsningen selv med gratis komponenter er python nok blant de enkleste alternativene.
http://docs.python.org/library/csv.html
http://matplotlib.sourceforge.net/
Vis hele sitatet...
Sjekket raskt på linkene dine, men klarer snart ikke å se på skjermen lenger, da jeg sikkert har 45 timer foran skjermen, de siste 3 døgn

Har ikke noe problem med å generere CSV filer ut av dataene. Mulig Python kan være noe å se på likevel. Får bruke litt tid i morgen, for å se om det ser overkommelig ut (har aldri brukt Python, eller mathplotlib).

Du kan kansje svare på dette spørsmålet:
Kan man generere rapporter med tekst + grafer, og så konvertere dem til en stor PDF fil med mathplotlib ?
Sitat av cazber Vis innlegg
Du kan kansje svare på dette spørsmålet:
Kan man generere rapporter med tekst + grafer, og så konvertere dem til en stor PDF fil med mathplotlib ?
Vis hele sitatet...
Mathplotlib er først og fremst for å lage plot, men jeg tok en titt på alternativer for å lage noe slikt i python:

http://www.reportlab.com/software/op...kit/faq/#2.3.2
http://appyframework.org/pod.html

Se også denne stackoverflow-posten hvor mange flere kandidater nevnes:
http://stackoverflow.com/questions/1...ool-for-python
R for grafer og latex for PDF-er brukes en del på jobben min. «x <- read.csv("fil.csv", sep=","); plot(x);» er det en trenger i R for å lage et enkelt plott av CSV-data og på min maskin brukte den ~500 MiB RAM etter å ha lest inn 22 millioner datapunkter.
Eksempler på hvordan en plotter enkle graftyper kan du finne her.
Sitat av cazber Vis innlegg
Det beste hadde derfor vært en software komponent som kan ta imot disse datamengdene, og generere PDF for meg. PDF script, som jeg viste til i første posten, fungerte egentlig akkurat slik jeg ønsket, men feilet når datamengdene ble store (laget bare en kjapp test med 50 grafer med dummy minuttsverdier for en måned, og da var det stopp).
Vis hele sitatet...
Kan du ikke splitte opp jobben.., generere rapporten i deler, slik at komponenten ikke trenger forholde seg til så store datamengder om gangen? Det kan ikke være så vanskelig å finne en løsning for å slå sammen mange PDF'er til én etterpå.
Trådstarter
Takker for alle svar.
Python ser interessant ut, men pga tidspress, så er det om å gjøre å ikke måtte lære seg så mye nytt akkurat nå. Kommer nok til å ta en kikk på det i en annen anledning, så vi er bedre rustet til å generere større rapporter i fremtiden.

Pga det samme tidspresset, så har vi nå gått i dialog med kunden, om å rett og slett dele opp rapporten i mindre biter. Dvs at vi generer flere mindre PDF'er på en katalog for den aktuelle måneden (er en månedsrapport jeg holder på med), i stedet for en stor rapport. Det blir litt mer knotete for kunden å finne det de er ute etter, men vil tro det er en akseptabel løsning, når det går opp for dem hvor mye data det egentlig er snakk om.
Sitat av cazber Vis innlegg
..rett og slett dele opp rapporten i mindre biter.
Vis hele sitatet...
Var det ikke det jeg foreslo??
Trådstarter
Sitat av tormaroe Vis innlegg
Var det ikke det jeg foreslo??
Vis hele sitatet...
Nesten. Vi tenkte å splitte opp rapproten i mindre deler, og la det være med det, men forslaget ditt gjorde at jeg googlet litt på det, og fant en PDFSplitMerge fra http://www.pdfsplit.com/. Lastet ned en trial av kommandolinje programmet deres, og det fungerte faktisk mye bedre enn det jeg hadde trodd.
Dvs at vi kan generere mange små PDF'er, på en temporær katalog, og så merge dem på slutten.

Takker så mye for tipset
Har blitt litt vel mye foran pc'en de siste dagene, og da er det ikke alltid man ser den "åpenbare" løsningen. Gjelder å komme seg bort, og tenke litt anderledes av og til.
Adobe Reader Pro kan også merge *.pdf-filer.
Trådstarter
Sitat av steinarlima Vis innlegg
Adobe Reader Pro kan også merge *.pdf-filer.
Vis hele sitatet...
Skal ta en titt på den, da jeg plutselig kom på at jeg ikke ser hvordan jeg skal få spesifisert rekkefølgen vha PDFSplit programmet. Regner dog med at dersom jeg tar ut filnavn som:
aaaaaaaa.pdf
aaaaaaab.pdf
aaaaaaac.pdf
osv...
så vil det blir riktig (og også i kronologisk riktig rekkefølge).
Trådstarter
Sitat av steinarlima Vis innlegg
Vis hele sitatet...
Funker sikkert fint den, men å konvertere hele systemet vår til Linux blir nok litt overkill for å få slått sammen disse pdf'ene

Kunne kansje portet til Android, siden mange telefoner har så kule navn på prosessorene. "Snapdragon 1GHz" høres jo faktisk kjappere ut enn "Core i7 980".
Sitat av cazber Vis innlegg
Funker sikkert fint den, men å konvertere hele systemet vår til Linux blir nok litt overkill for å få slått sammen disse pdf'ene

Kunne kansje portet til Android, siden mange telefoner har så kule navn på prosessorene. "Snapdragon 1GHz" høres jo faktisk kjappere ut enn "Core i7 980".
Vis hele sitatet...
De tilbyr kildekoden sin, så det er jo fort gjort å kompilere til Windows også. http://www.pdflabs.com/docs/build-pdftk/
Trådstarter
Sitat av Dyret Vis innlegg
De tilbyr kildekoden sin, så det er jo fort gjort å kompilere til Windows også. http://www.pdflabs.com/docs/build-pdftk/
Vis hele sitatet...
Kikket litt på siden, og fant en ferdig kompilert Windows .exe også, så da er det bare å teste
Alltid fint å ha kildekoden da, så slipper man å være stuck dersom firma/utvikler forsvinner.
Sitat av cazber Vis innlegg
Skal lage en rapport, som må være på PDF format (bestemt av kunden). Rapporten skal inneholde en del tekst, samt noen grafer.
Problemet er at datagrunnlaget for disse grafene er ganske stort. Har prøvd å gå via COM interface mot Excel, men det tar for lang tid (og den Excel versjonen vi har på jobb, takler bare 32000 elementer i en serie i en graf).

Har også testet ut PDF Charts fra http://www.fytek.com/, men det viste seg at den ikke klarer å håndtere datagrunnlaget heller (ble for mye for den).

Totalt er det vel ca 360 grafer som skal lages (i samme PDF dokument), der ca 80 av dem inneholder mesteparten av dataene. Totalt ca 4,5 millioner datapunkter.

Spørsmålet er om noen vet om en komponent jeg kan bruke til en slik oppgave.
Bruker et ganske sært programmeringsspråk (Visual Dataflex), så det må enten funke ved at jeg kan skrive en fil, som så komponenten genererer PDF rapport fra, eller så må jeg ha et com interface / DLL som jeg kan bruke. Kan desverre ikke bruke .NET her.

Det gjør ikke noe om aktuell software/komponent koster noen kr., men trenger en trial så jeg kan se at det faktisk vil virke.
Vis hele sitatet...
Hvis jeg misforstår deg rett så prøver du å generere en graf ved å plotte 50.000 punkter eller noe slikt.

Hvis dette er tidsavhengige data så ville jeg redusert datamengden ved å ta snittet av 250 påfølgende punkter, så de neste 250 og så videre; eventuelt bibeholde max- og -min-verdier hvis disse skal plottes, whatever. Du klarer uansett ikke å se 50.000 punkter i en graf. Med redusert datamengde å plotte fikser Excel den jobben (vil jeg anta).

Hdhd.,

- Alf
Trådstarter
Sitat av Alf P. Steinbac Vis innlegg
Hvis jeg misforstår deg rett så prøver du å generere en graf ved å plotte 50.000 punkter eller noe slikt.

Hvis dette er tidsavhengige data så ville jeg redusert datamengden ved å ta snittet av 250 påfølgende punkter, så de neste 250 og så videre; eventuelt bibeholde max- og -min-verdier hvis disse skal plottes, whatever. Du klarer uansett ikke å se 50.000 punkter i en graf. Med redusert datamengde å plotte fikser Excel den jobben (vil jeg anta).

Hdhd.,

- Alf
Vis hele sitatet...
100% enig med deg, men desverre så var ikke kunden det. De forlanger at vi plotter inn allt sammen, selv om det er helt meningsløst. Slik er det bare av og til, og vi må forholde oss til det
Sitat av cazber Vis innlegg
100% enig med deg, men desverre så var ikke kunden det. De forlanger at vi plotter inn allt sammen, selv om det er helt meningsløst. Slik er det bare av og til, og vi må forholde oss til det
Vis hele sitatet...
Tror du kunden hadde merket det hvis du hadde tatt gjennomsnitt uten å spørre?
Huff, kunder... Du kan jo fortelle dem at for at en graf med 50 000 datapunkter skal gi mening, så må den har en oppløsning på 50 000 pixler